如何检查Python字典中多个键的存在?

8 投票
4 回答
624 浏览
提问于 2025-04-15 22:36

我有一个字典,里面存了一些键值对:

sites = {
    'stackoverflow': 1,
    'superuser': 2,
    'meta': 3,
    'serverfault': 4,
    'mathoverflow': 5
}

为了检查这个字典里是否有超过一个的键,我会这样做:

'stackoverflow' in sites and 'serverfault' in sites

这样做只需要查找两个键,维护起来还不错。那么有没有更好的方法来检查一个很大的字典里的很多键呢?

4 个回答

1

在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后把它放到另一个地方。这就像是把水从一个杯子倒到另一个杯子一样。

有些时候,我们会遇到一些问题,比如数据的格式不对,或者我们想要的数据没有被正确地获取到。这就像是你想喝水,但杯子里却是果汁,这样你就不能直接喝了。

为了避免这些问题,我们可以使用一些工具和方法来确保我们获取的数据是正确的,并且能够顺利地转移到我们想要的地方。这就像是使用一个漏斗来确保水不会洒出来。

总之,处理数据就像是做一个小实验,我们需要仔细观察,确保每一步都做对,这样才能得到我们想要的结果。

mysites = ['stackoverflow', 'superuser']
[i for i in mysites if i in sites.keys()]  # ==> sites in the list mysites that are in your dictionary
[i for i in mysites if i not in sites.keys()]  # ==> sites in the list mysites that are not in your dictionary
9

你可以使用 all

print( all(site in sites for site in ('stackoverflow','meta')) )
# True
print( all(site in sites for site in ('stackoverflow','meta','roger')) )
# False
12

你可以把字典的键当作一个集合,然后使用集合的子集检查功能:

set(['stackoverflow', 'serverfault']).issubset(sites) # ==> True

set(['stackoverflow', 'google']).issubset(sites) # ==> False

撰写回答