gpt4 book ai didi

Python - 如何计算两个字典的相等部分?

转载 作者:太空狗 更新时间:2023-10-30 01:52:36 26 4
gpt4 key购买 nike

我在组合或计算这两个词典的公共(public)/相等部分时遇到问题。在我的字典中,值是列表:

d1 = {0:['11','18','25','38'], 
1:['11','18','25','38'],
2:['11','18','25','38'],
3:['11','18','25','38']}

d2 = {0:['05','08','11','13','16','25','34','38','40', '43'],
1:['05', '08', '09','13','15','20','32','36','38', '40','41'],
2:['02', '08', '11', '13', '18', '20', '22','33','36','39'],
3:['06', '11', '12', '25', '26', '27', '28', '30', '31', '37']}

我想检查“d2”并知道是否有来自“d1”的数字。如果有的话,我想用新数据更新其中一个,或者接收第三本字典“d3”,其中只有“d1”和“d2”中相同/相等的值,例如:

d3 = {0:['11','25','38'], 1:['38'], 2:['11','18'], 3:['11','25']} 

谁能帮我解决这个问题?

我的错是我忘记说得更具体了。我正在寻找 Python 中的解决方案。

最佳答案

假设这是 Python,您需要:

dict((x, set(y) & set(d1.get(x, ()))) for (x, y) in d2.iteritems())

生成结果字典“d3”。

Python 3.0+ 版本

>>> d3 = {k: list(set(d1.get(k,[])).intersection(v)) for k, v in d2.items()}
{0: ['11', '25', '38'], 1: ['38'], 2: ['11', '18'], 3: ['11', '25']}

以上版本(以及 Python 2.x 版本)允许空交集,因此在一般情况下需要额外的过滤:

>>> d3 = {k: v for k, v in d3.items() if v}

在一次传递中结合以上内容:

d3 = {}
for k, v in d2.items():
# find common elements for d1 & d2
v3 = set(d1.get(k,[])).intersection(v)
if v3: # whether there are common elements
d3[k] = list(v3)

[编辑:我创建了这个帖子社区 wiki,以便人们可以根据需要改进它。我承认,如果您不习惯用 Python 阅读此类内容,那么阅读起来可能会有些困难。]

关于Python - 如何计算两个字典的相等部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/638360/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com