如何在python中迭代多个字典中的json键和值

如何在python中迭代多个字典中的json键和值,python,json,loops,dictionary,Python,Json,Loops,Dictionary,我试图比较json中存储的不同字典的键。如果键相同,则将这些键存储在另一个字典中,但我没有得到所需的输出。输入看起来像: [ { "huma":10, "sana":25 }, { "sara":12, "huma":20, " zeb:15 } ] 我尝试的是: def compare(): result_dictionary = {} with open('data

我试图比较json中存储的不同字典的键。如果键相同,则将这些键存储在另一个字典中,但我没有得到所需的输出。输入看起来像:

  [  
   {  
      "huma":10,
      "sana":25
   },
   {  
      "sara":12,
      "huma":20,
      "      zeb:15
   }
]
我尝试的是:

def compare():
    result_dictionary = {}
    with open('data.json') as data_file:    
        data = json.load(data_file)
        for d1 in data:
            for key, value in d1.items():
                print("key: {key} | value: {value}".format(key=key, value=value))
compare()

我不知道如何比较多个字典的这些键,以及将它们存储在新字典中的匹配项?输出应该是“Huma”,因为在这两个字典中只有Huma是相等的。

使用
集合

演示:

import collections
d = [{  "huma":10,"sana":25}, { "sara":12,"huma":20,"zeb":15}]
dd = collections.defaultdict(list)
for i in d:
    for k,v in i.items():
        dd[k].append(v)
print([k for k,v in dd.items() if len(v) > 1])
['huma']
输出:

import collections
d = [{  "huma":10,"sana":25}, { "sara":12,"huma":20,"zeb":15}]
dd = collections.defaultdict(list)
for i in d:
    for k,v in i.items():
        dd[k].append(v)
print([k for k,v in dd.items() if len(v) > 1])
['huma']

您的输入数据是否只有两个字典?或者更多?如果有3个字典,那么在将密钥存储到另一个字典之前,您的密钥是否应该在所有3个字典中?如果有83本字典,那么所有83本字典都应该有钥匙吗?或者该键应该在大多数词典中,还是在少数词典中,只要它大于1请用更多信息更新您的问题。。。另外,请向我们展示您如何“存储在字典中”或“比较键”的代码,因为您当前的代码只是进行一些打印。
import operator,functools
then
common_keys=functools.reduce(operator.and_u,(d.keys()表示数据中的d))
将在一系列字典中生成一组所有公用键。@EdwinvanMierlo键是否应在所有字典中并不重要,但如果任何键与字典中的任何其他键匹配1次或更长时间,则应将其存储在另一个字典或另一个列表中。现在我只是想得到常用的密钥。@user3778289在这种情况下,您已经有了一个很好的答案