在Python字典中检查键模式

11 投票
5 回答
22721 浏览
提问于 2025-04-16 04:16
    dict1=({"EMP$$1":1,"EMP$$2":2,"EMP$$3":3})
   dict1.get("EMP##") ??

如何用Python检查字典中是否存在EMP

5 个回答

2

你需要更具体地说明你想要做什么。不过,假设你给出的字典是这样的:

 dict1={"EMP$$1":1, "EMP$$2":2, "EMP$$3":3}

如果你想在请求某个特定的键之前,先检查一下这个键是否存在,你可以这样做:

dict1.has_key('EMP$$1') 
True

这样会返回 True,因为 dict1 中确实有一个键 EMP$$1

你也可以不去检查键的存在,而是直接使用 dict1.get() 的默认返回值:

dict1.get('EMP$$5',0)
0

这样会返回 0,因为 dict1 中没有键 EMP$$5

类似地,你还可以使用 `try/except/` 结构来捕捉和处理缺失的键:

try:
    dict1['EMP$$5']
except KeyError, e:
    # Code to deal w key error
    print 'Trapped key error in dict1 looking for %s' % e

其他对这个问题的回答也很不错,但我们需要更多的信息才能给出更准确的建议。

8

我觉得这种做法和字典的本意有点相悖。

字典是由一些哈希键组成的,每个键都有对应的值。这样结构的好处是可以非常快速地查找(大约是O(1)的速度)。如果你去查找键的话,就失去了这个优势。

我建议你重新整理一下你的字典。

dict1 = {"EMP$$": {"1": 1, "2": 2, "3": 3} }

然后,找到“EMP$$”就简单多了。

if "EMP$$" in dict1:
    #etc...
33

你想要做的事情不是特别清楚。

你可以通过循环遍历字典中的键,使用`startswith()`方法来选择键:

>>> for key in dict1:
...     if key.startswith("EMP$$"):
...         print "Found",key
...
Found EMP$$1
Found EMP$$2
Found EMP$$3

你还可以用列表推导式来获取所有匹配的值:

>>> [value for key,value in dict1.items() if key.startswith("EMP$$")]
[1, 2, 3]

如果你只是想知道某个键是否匹配,可以使用`any()`函数

>>> any(key.startswith("EMP$$") for key in dict1)
True

撰写回答