gpt4 book ai didi

python - 在python中合并2个字典

转载 作者:行者123 更新时间:2023-11-28 21:38:06 27 4
gpt4 key购买 nike

我有两个字典:

一个=

{
"2001935072": {
"WR": "48.9",
"nickname": "rogs30541",
"team": 2
},
....
}

b=

{
"2001935072": {
"wtr": 816
},
....
}

我尝试将它们与 a.update(b) 和 a={**a, **b} 合并,但是当我打印 (a) 时都给出了这个输出:

{
"2001935072": {
"wtr": 816
},
....
}

基本上是 a=b,如何合并 A 和 B 所以输出是

{
"2001935072": {
"WR": "48.9",
"nickname": "rogs30541",
"team": 2
"wtr": 816
},
....
}

最佳答案

我会计算键的并集,然后重建字典,将内部字典与辅助方法合并在一起(因为字典合并在 3.6+ 内联中是可能的,但之前不是)(How to merge two dictionaries in a single expression?)

a={
"2001935072": {
"WR": "48.9",
"nickname": "rogs30541",
"team": 2
}
}
b= {
"2001935072": {
"wtr": 816
},

}
def merge_two_dicts(x, y):
"""Given two dicts, merge them into a new dict as a shallow copy."""
z = x.copy()
z.update(y)
return z

result = {k:merge_two_dicts(a.get(k,{}),b.get(k,{})) for k in set(a)|set(b)}

print(result)

结果:

{'2001935072': {'WR': '48.9', 'nickname': 'rogs30541', 'team': 2, 'wtr': 816}}

注意事项:

  • a.get(k,{}) 允许使用默认值获取 k 的值,因此合并仍然有效,仅保留 b 的值 字典。
  • merge_two_dicts 只是一个辅助 函数。不要直接与 ab 字典一起使用,否则会给出错误的结果,因为最后合并的一个“获胜”并覆盖其他字典值

使用 Python 3.6+:你可以在没有任何辅助函数的情况下做到这一点:

result = {k:{**a.get(k,{}),**b.get(k,{})} for k in set(a)|set(b)}

关于python - 在python中合并2个字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48660492/

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