>假设我们有一个包含单词列表的字典:
temp = {"1": "hello", "2": "goodbye", "3": "hello", "4": "goodbye", "5": "hi"}
我需要帮助弄清楚如何比较每个键的值。我知道我需要遍历每个,但我无法弄清楚如何将"1"的值与"2"的值进行比较,依此类推。
输出应为:
"1" == "3"
"2" == "4"
"5" ==
提前谢谢。
您可以执行以下操作。收集每个dict
(或defaultdict
(lists
的所有密钥:
from collections import defaultdict
temp = {"1": "hello", "2": "goodbye", "3": "hello", "4": "goodbye", "5": "hi"}
d = defaultdict(list)
for k, v in temp.items():
d[v].append(k)
for k in d:
print ' = '.join(repr(v) for v in d[k]) # repr only necessary to display quotes
# print ' = '.join(d[k])
'5'
'1' = '3'
'2' = '4'
一种方法是使用 collections
模块中的defaultdict
来反转字典(即使其成为旧值类型>指向它的旧键列表(。这可以通过以下方式实现:
from collections import defaultdict
inverted_dict = defaultdict(list)
for k,v in temp.items():
inverted_dict[v].append(k)
然后旧字典中的每个值都显示为新字典中的一个键,您可以通过迭代inverted_dict
并打印列表来打印"相等"键,例如:
for k,v in inverted_dict.items():
print v