将 Python 字典中的键替换为唯一值

2024-05-28

a = {0: 'PtpMotion', 1: 'PtpMotion', 2: 'LinMotion', 3: 'LinMotion', 4: 'LinMotion', 5: 'LinMotion', 6: 'LinMotion', 7: 'LinMotion', 8: 'LinMotion', 9: 'PtpMotion', 10: 'LinMotion', 11: 'Wait'}
b = {}
for key, val in a.items():
    b[val] = key
print b

我想做的是将字典的值交换为键。但是使用这段代码,我丢失了字典的一些信息,得到了这个输出:

{'LinMotion': 10, 'PtpMotion': 9, 'Wait': 11}

为什么会发生这种情况?


每个键在字典中只能出现一次。您可以存储每个键的索引列表:

import collections
b = collections.defaultdict(list)
for key, val in a.iteritems():
    b[val].append(key)
print b
# {'LinMotion': [2, 3, 4, 5, 6, 7, 8, 10], 'PtpMotion': [0, 1, 9], 'Wait': [11]}

编辑:正如 ecik 在评论中指出的,您还可以使用defaultdict(set)(并使用.add()代替.append()在循环)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Python 字典中的键替换为唯一值 的相关文章

随机推荐

  • 如何从 GridView TemplateColumn 单击触发 UpdatePanel?

    我有以下情况 我的所有控件都在页面上的更新面板上 这些控件之一是 GridView 该 GridView 在标题模板字段上包含一个复选框 以进行全部选中 autopostback 是 true 但是当检查更改时 没有任何更改 更新面板会触发
  • 在不同类型检查(tsconfig)上创建编译器错误

    有人可以解释为什么这不会引发错误吗 interface A id number const a A id 5 const testA boolean a 1 works but why interface B id number const
  • 是否可以创建 Java RAM 磁盘以与 java.io.* API 一起使用?

    我正在使用一个第三方库 它基本上创建一个输出目录 其中包含不同类型的文件和子目录 我希望能够编写单元测试来确认输出正确 我希望能够将库与 RAM 磁盘一起使用 这样库所做的任何事情都不会以任何方式接触实际的磁盘板 这个想法是让测试运行和清理
  • python解释器自动重启而不返回答案

    调用递归函数时 python解释器会自动重新启动吗 我正在编写一个快速排序算法 并尝试对一个大的数字数组 顺序 10 4 进行排序 但是当我尝试对整个数组进行排序时 python 正在重新启动 即给我 重新启动 并且存储在内存中的所有值 函
  • 如何让 Mockito 在 androidTest 中工作

    在我的测试中 我如何模拟我编写的课程 这是我的测试代码 import android support test runner AndroidJUnit4 import org junit Before import org junit Te
  • 如何检查单词是否在wordNet中

    我开始了解wordNet直到我知道我找到了synonymous对于一个特定的词 现在我有一个文件 我想使用标记化该文本n gram例如 String s I like to wear tee shirt 使用后n gram这将是 I lik
  • IndexError:布尔索引与维度 0 上的索引数组不匹配

    在我将 Numpy 更新到 1 13 1 之前 我的代码工作正常 现在我收到以下错误 IndexError boolean index did not match indexed array along dimension 0 dimens
  • 是否可以追溯添加如果执行 svn cp 而不是 cp 时就会存在的历史记录?

    我有一个项目 其中一个目录最初 数百次提交前 从另一个目录逐字复制 但未使用 svn cp 因此历史记录中存在断开连接 现在是否可以在初始复制点连接两个目录 还是太晚了 让我猜猜你在说什么 目录foo处于颠覆状态 在修订版 100 中 有人
  • 实践中的私有成员与公共成员(封装有多重要?)[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 面向对象编程的最大优点之一是封装 我们 或者至少是我 学到的 真理 之一是成员应该始终设为私有并通过访问器和修改器提供方法 从而确保验证和验证更
  • 在 Eclipse 中删除空块之前的新行

    我更喜欢奥尔曼式 http en wikipedia org wiki Brace style Allman style大括号 例如 if foo magical prancing unicorn stuff 而不是 if foo unma
  • 如何通过ConfigurationManager找到配置文件位置?

    如何通过ConfigurationManager找到配置文件位置 我在代码中有 ConfigurationManager 类 并且正在调试它 我想知道它指向哪个配置文件 web config 或 app config 等 Configura
  • nginx/mono 2.8 上的 ASP.Net MVC 2

    我正在尝试在 Linux 环境上设置 ASP Net MVC 2 应用程序 我在 VirtualBox 上安装了 Ubuntu 10 10 然后从源安装了 Mono 2 8 之后我安装了 nginx 并按照建议进行配置here http w
  • 生成一定长度的所有排列

    假设我们有一个字母表 abcdefghiklimnop 如何以有效的方式以五个一组的形式重复该字母表来递归生成排列 几天来我一直在为此苦苦挣扎 任何反馈都会有帮助 本质上这与 生成给定字符串的所有排列 https stackoverflow
  • 需要帮助编写循环任务调度程序

    我需要编写一个工具 它将按照用户可配置的时间表运行重复任务 我将用 C 3 5 编写它 它将在 XP Windows 7 或 Windows Server 2008 上运行 完成任务大约需要 20 分钟 用户可能想要设置多种配置 例如每日
  • 帮助在 UIWebView 中使用 Javascript 代码

    我想在 webView 中运行以下代码 以便内容可编辑 javascript document body contentEditable true document designMode on void 0 到目前为止 我已经尝试过这个 v
  • 如何从 URL 获取当前的 Web 目录?

    如果我有一个网址http www example com sites dir index html http www example com sites dir index html 我想提取 sites 这个词 我知道我必须使用正则表达式
  • Xcode 8:使用 iOS 9.3 基础 SDK 编译?

    我在 Xcode 8 0 beta 8S128d 中将 iOS 应用程序升级到 Swift 3 0 我以为一切都已准备就绪 并将其上传到 iTunes Connect 当我点击 提交审核 时 它给了我一个包含 26 个错误的列表 每个嵌入式
  • 为什么 count 比 $count 差

    我只是在查看不同问题的答案以了解更多信息 我看到一个answer https stackoverflow com a 4891402 429850这表明在 php 中编写这样的做法是不好的做法 for i 0 i
  • Rails 上的 SASS 无效 CSS 错误

    我正在尝试使用http startbootstrap com stylish portfolio http startbootstrap com stylish portfolio但是 在我的 Rails 应用程序中 我在 vintage
  • 将 Python 字典中的键替换为唯一值

    a 0 PtpMotion 1 PtpMotion 2 LinMotion 3 LinMotion 4 LinMotion 5 LinMotion 6 LinMotion 7 LinMotion 8 LinMotion 9 PtpMotio