如何在python中迭代多个字典中的json键和值
我试图比较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
[
{
"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
thencommon_keys=functools.reduce(operator.and_u,(d.keys()表示数据中的d))
将在一系列字典中生成一组所有公用键。@EdwinvanMierlo键是否应在所有字典中并不重要,但如果任何键与字典中的任何其他键匹配1次或更长时间,则应将其存储在另一个字典或另一个列表中。现在我只是想得到常用的密钥。@user3778289在这种情况下,您已经有了一个很好的答案