合并两个大小不同、值不同的词典

2024-04-27 00:21:39 发布

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

如果我有两个不同的字典,我是从不同大小的查询中创建的

dictionary1:
{'id': 1 , 'passCount': 3}, {'id': 2 , 'passCount': 4}, {'id': 5 , 'passCount': 7}, {'id': 6, 'passCount': 3}

dictionary2: 
{'id': 1 , 'failCount': 1}, {'id': 3 , 'failCount': 2}, {'id': 5 , 'failCount': 3}

最初,我从这两个字典创建了一个主列表:

^{pr2}$

当我将这个列表打印出来作为我的数据时,我只会得到一个匹配的id的列表,而不会考虑其他的id。在

因为这个原因,我想打印一本字典,在那里我可以把它打印出来

{'id' = 1, 'passCount' = 3, 'failCount' = 1}, {'id': 2 , 'passCount': 4, 'failCount' = 0}...以此类推,而不删除任何id

谢谢


Tags: 数据id列表字典原因pr2dictionary2dictionary1
2条回答

可能它们是两个不同的列表,而不是字典,所以我假设它们是两个列表:

failCount默认设置为0,您可以尝试以下操作:

a=[{'id': 1 , 'passCount': 3}, {'id': 2 , 'passCount': 4}, {'id': 5 , 'passCount': 7}, {'id': 6, 'passCount': 3}]
b=[{'id': 1 , 'failCount': 1}, {'id': 3 , 'failCount': 2}, {'id': 5 , 'failCount': 3}]

for j in a:
    j.update({'failCount': 0})
    for i in b:
        if i["id"]==j["id"]:
            j.update(i)

print(a)

输出:

^{pr2}$

使用dict.setdefaultdict.update方法的短解:

l1 = [{'id': 1 , 'passCount': 3}, {'id': 2 , 'passCount': 4}, {'id': 5 , 'passCount': 7}, {'id': 6, 'passCount': 3}]
l2 = [{'id': 1 , 'failCount': 1}, {'id': 3 , 'failCount': 2}, {'id': 5 , 'failCount': 3}]

grouped = {}
for d in l1+l2:
    grouped.setdefault(d['id'], {'failCount':0, 'passCount': 0}).update(d)

result = [d for d in grouped.values()]
print(result)

输出:

^{pr2}$

相关问题 更多 >