如何比较多个字典以找出重复的键以及它们重复了多少次

2024-05-15 12:55:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要比较两个以上的字典来找出有多少重复的键以及它们重复了多少次。 比如说

D1 = {'a' : 'value', 'b': 'value', 'c': 'value', 'd', 'value'}
D2 = {'d', 'value', 'a' : 'value'}
D3 = {'a' : 'value', 'd', 'value', 'b': 'value'}
D4 = {'a' : 'value'}

输出应打印重复的按键以及每个按键重复的次数,例如:

4-a # key 'a' is repeated 4 times accross dictionaries
2-b 
3-d

Tags: key字典isvalue次数repeated按键d2
2条回答
someDict = {
    'D1' : {'a' : 'value', 'b': 'value', 'c': 'value', 'd': 'value'},
    'D2' : {'d': 'value', 'a': 'value'},
    'D3' : {'a' : 'value', 'd': 'value', 'b': 'value'},
    'D4' : {'a' : 'value'}
}

keyList = []

for key, value in someDict.items():
    for k, v in value.items():
        keyList.append(k)

res = {i:keyList.count(i) for i in keyList}
print(res)

在这里,我只是创建了一个存储所有其他dict的dict。然后我迭代了dicts,得到了所有的键并将它们存储到一个列表中。然后通过听写理解,我得到了重复按键的次数

列出理解,然后遍历数组

dic = [x for x in D1] + [x for x in D2] + [x for x in D3] + [x for x in D4]
ans = {} 
for x in dic:
    if x in list:
        ans[x] += 1
    else:
        ans[x] = 1

更新
我忘了字典理解,所以你可以缩短它

dic = [x for x in D1]+ [x for x in D2] +  [x for x in D3] + [x for x in D4]  
ans = {i:dic.count(i) for i in dic}

相关问题 更多 >