Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较单个字典中的值-Python_Python_Loops_Dictionary_Compare - Fatal编程技术网

比较单个字典中的值-Python

比较单个字典中的值-Python,python,loops,dictionary,compare,Python,Loops,Dictionary,Compare,假设我们有一本包含单词列表的词典: temp = {"1": "hello", "2": "goodbye", "3": "hello", "4": "goodbye", "5": "hi"} 我需要帮助找出如何比较每个键的值。我知道我需要遍历每一个,但我不知道如何比较“1”和“2”的值,以此类推 输出应为: “1”==“3” "2" == "4" “5”== 提前感谢。您可以执行以下操作。收集列表的目录(或)中每个目录的所有密钥: from collections import defaul

假设我们有一本包含单词列表的词典:

temp = {"1": "hello", "2": "goodbye", "3": "hello", "4": "goodbye", "5": "hi"}
我需要帮助找出如何比较每个键的值。我知道我需要遍历每一个,但我不知道如何比较“1”和“2”的值,以此类推

输出应为:

“1”==“3”
"2" == "4"
“5”==


提前感谢。

您可以执行以下操作。收集
列表
目录
(或)中每个目录的所有密钥:

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
从本质上反转dict(即将其设置为old value->指向它的旧键列表)。这可以通过以下方式实现:

from collections import defaultdict
inverted_dict = defaultdict(list)
for k,v in temp.items():
    inverted_dict[v].append(k)
然后,旧dict中的每个值在新dict中显示为一个键,您可以通过迭代
inversed_dict
并打印列表来打印“equal”键,例如:

for k,v in inverted_dict.items():
    print v

你说比较是什么意思,我看不到任何比较。什么?它和复制品不一样question@Arman,正确:dict['1']==dict[2'],但是dict['1']==dict['3'],其他的也一样。我明白,但我只是把它作为一个例子。@MartijnPieters这些重复项到底是什么?@MartijnPieters但这种指数方法似乎远不是解决这个问题的最佳方法。defaultdict(list)中的list给了我一个类型错误、不易损坏的类型:“list”代码在这里工作。在您的原始
dict
中是否有作为值的列表?是的,它们是单词'd[v]的列表。附加(k)'TypeError:unhabable type:'list'是错误,您应该把它放在问题中。您可以这样做:
d[tuple(v)]。但是追加(k)