gpt4 book ai didi

python - 类型错误 : unsupported operand type(s) for +: 'dict_items' and 'dict_items'

转载 作者:IT老高 更新时间:2023-10-28 21:15:03 25 4
gpt4 key购买 nike

我试着像这样总结两个字典:

my_new_dict = dict(my_existing_dict.items() + my_new_dict.items())

但收到错误

TypeError: unsupported operand type(s) for +: 'dict_items' and 'dict_items'

我做错了什么?

最佳答案

从 Python 3.9(尤其是 PEP 584)开始,dicts 像集合一样获得联合(|)和更新(|=)操作,因此成为“一种真正的方式”来实现您正在寻找的东西。

d1 | d2

该 PEP 列出了早期 Python 版本中可用的其他选项,这些选项都有其缺点。如果您达到 PEP 448 (Python 3.5),我建议使用:

{**d1, **d2}

这是将两个字典解包成一个新字典,从而形成一个联合。

一个问题是你想要的行为是模棱两可的——字典不能有重复的键,所以如果两者都包含相同的键,你就不清楚你想要发生什么。规范明确说明了使用此方法时会发生什么:

In dictionaries, later values will always override earlier ones

如果你想要相反的行为,你可以简单地交换字典中文字的顺序。

您的方法不起作用,因为 dictionary views are set-like ,所以他们没有实现加法。

您可能想要的是 union : d1.items() | d2.items(),它将为您提供一组 (key, value) 元组。如果您随后将其传递给 dict() 并且有重复项,则“最后一个”值将是使用的值,但是集合(与 View 本身不同)是无序的,因此无法保证哪个项目将在组合集中以“第一”结束,这意味着哪个“获胜”将是任意的。

所以,简而言之,只要订单/重复选择不重要:

dict(d1.items() | d2.items())

在 Python 2 中,dict.items() 只返回一个 list,您的方法将在其中起作用。

关于python - 类型错误 : unsupported operand type(s) for +: 'dict_items' and 'dict_items' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13361510/

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