在Python字典中检查键模式
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