我有词典列表,其中每个词典都存在密钥site
。
换句话说,此代码返回True
:
all('site' in site for site in summary)
问题是,如果在任何字典中存在与True
不同的密钥,那么迭代字典列表并返回site
的pythonic方法是什么?
示例:在以下列表中,我想返回True
,因为上一本词典中存在cost
但我无法告诉我们将是另一个键,它可以是示例中的cost
,它可以是其他字符串;这个问题的随机密钥。
[
{"site": "site_A"},
{"site": "site_B"},
{"site": "site_C", "cost": 1000}
]
答案 0 :(得分:7)
如果所有字典都有密钥site
,则字典的长度至少为1. 任何其他密钥的存在会使字典大小增加到大于1,测试为此:
any(len(d) > 1 for d in summary)
答案 1 :(得分:2)
您可以检查每个字典dct
:
any(key != "site" for key in dct)
如果您想检查这个词典列表dcts
,请在any
附近推送另一个any(any(key != "site" for key in dct) for dct in dcts)
这也使得它可以轻松扩展以允许多个不同的密钥。 (例如any(key not in ("site", "otherkey") for key in dct)
)因为如果只能使用一个密钥,那么字典是否适用?
答案 2 :(得分:0)
这是一个更长的版本,但它可以满足您的需求。只是为了提供更多选择:
any({k: v for k, v in site.items() if k != 'site'} for site in summary)