2017-02-06 94 views
0

假设我们有一个包含单词列表的字典:在单个词典比较值 - Python的

temp = {"1": "hello", "2": "goodbye", "3": "hello", "4": "goodbye", "5": "hi"} 

我需要帮助搞清楚如何来比较每个键的值。我知道我需要遍历每一个,但我不知道如何比较“1”到“2”的值,等等。

输出应该是:提前

"1" == "3" "2" == "4" "5" ==

感谢。

+0

你是什么意思与*比较*,我没有看到任何比较。 –

+0

什么?它不是重复的问题 – Arman

+0

@Arman,更正:dict ['1'] == dict [2'],但然后dict ['1'] == dict ['3'],其他的一样。我明白,但我只是把它放在那里作为一个例子。 – CM9

回答

0

您可以执行以下操作。收集每个所有按键在listsdict(或defaultdict):

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' 
+0

defaultdict(list)中的列表给了我一个TypeError,不可用类型:'list' – CM9

+0

代码在这里工作。在原始的'dict'中是否有任何列表作为值? – schwobaseggl

+0

是的,它们是单词列表 – CM9

0

一种方法是使用defaultdictcollections模块基本上反转字典(即使它类型旧值的 - >旧密钥列表指出它)。这可以如下实现:

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