gpt4 book ai didi

python:检查字典中是否存在多个键的最佳方法是什么?

转载 作者:太空狗 更新时间:2023-10-29 17:09:31 25 4
gpt4 key购买 nike

我的字典看起来像

d = {
'name': 'name',
'date': 'date',
'amount': 'amount',
...
}

我想测试nameamount是否存在,所以我会做

if not `name` in d and not `amount` in d:
raise ValueError # for example

假设我从一个 api 获取数据,我想测试 10 字段是否存在于字典中。

它仍然是最好的寻找方式吗?

最佳答案

您可以使用设置交集:

if not d.viewkeys() & {'amount', 'name'}:
raise ValueError

在 Python 3 中,这将是:

if not d.keys() & {'amount', 'name'}:
raise ValueError

因为 .keys() 默认返回一个字典 View 。 Dictionary view objects例如 .viewkeys()(和 Python 3 中的 .keys())作为集合返回,交集测试非常有效。

Python 2.7 中的演示:

>>> d = {
... 'name': 'name',
... 'date': 'date',
... 'amount': 'amount',
... }
>>> not d.viewkeys() & {'amount', 'name'}
False
>>> del d['name']
>>> not d.viewkeys() & {'amount', 'name'}
False
>>> del d['amount']
>>> not d.viewkeys() & {'amount', 'name'}
True

请注意,只有当两个 键都丢失时,这才会测试 True。如果您需要在缺少任一个 的情况下通过测试,请使用:

if not d.viewkeys() >= {'amount', 'name'}:
raise ValueError

仅当两个键都存在时才为 False:

>>> d = {
... 'name': 'name',
... 'date': 'date',
... 'amount': 'amount',
... }
>>> not d.viewkeys() >= {'amount', 'name'}
False
>>> del d['amount']
>>> not d.viewkeys() >= {'amount', 'name'})
True

对于 strict 比较(允许两个键,不多也不少),在 Python 2 中,将字典 View 与集合进行比较:

if d.viewkeys() != {'amount', 'name'}:
raise ValueError

(因此在 Python 3 中将是 if d.keys() != {'amount', 'name'})。

关于python:检查字典中是否存在多个键的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16004593/

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