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(使用前将#替换为@)