如何反转含有重复值的字典
我有一个字典,里面有将近10万个(键,值)对,而且大部分的键都对应着相同的值。比如说:
mydict = {'a': 1, 'c': 2, 'b': 1, 'e': 2, 'd': 3, 'h': 1, 'j': 3}
我想做的是把这个字典反转,也就是说,mydict
中的每个值都要变成 reverse_dict
的一个键,并且这个键要对应一个列表,列表里包含所有以前在 mydict
中对应这个值的键。根据上面的例子,我会得到:
reversed_dict = {1: ['a', 'b', 'h'], 2: ['c', 'e'] , 3: ['d', 'j']}
我想出了一个解决方案,但这个方案效率很低,我想听听有没有更有效的方法来实现这个目标:
reversed_dict = {}
for value in mydict.values():
reversed_dict[value] = []
for key in mydict.keys():
if mydict[key] == value:
if key not in reversed_dict[value]:
reversed_dict[value].append(key)
7 个回答
1
这段内容主要讨论了一个编程问题,涉及到如何处理某些特定的情况。在编程中,有时候我们会遇到一些意想不到的错误或者行为,这可能是因为代码没有按照预期运行。
在这种情况下,程序员通常会尝试找出问题的根源,看看是哪里出了错。可能是因为输入的数据不符合要求,或者是代码的逻辑有问题。解决这些问题的过程就像侦探破案一样,需要仔细分析每一步。
此外,程序员还会使用一些工具来帮助他们调试代码,这些工具可以让他们看到代码运行时的状态,帮助他们更快地找到问题所在。
总之,编程就像拼图,有时候需要不断尝试和调整,才能把所有的部分都拼凑在一起,最终得到一个完整的作品。
for k,v in dict.iteritems():
try:
reversed_dict[v].append(k)
except KeyError:
reversed_dict[v]=[k]
5
reversed_dict = {}
for key, value in mydict.items():
reversed_dict.setdefault(value, [])
reversed_dict[value].append(key)
当然可以!请把你想要翻译的内容发给我,我会帮你把它变得更简单易懂。
29
from collections import defaultdict
reversed_dict = defaultdict(list)
for key, value in mydict.items():
reversed_dict[value].append(key)