在python的字典中检查键模式

在python的字典中检查键模式,python,dictionary,Python,Dictionary,如何使用python检查字典中是否存在EMP dict1=({"EMP$$1":1,"EMP$$2":2,"EMP$$3":3}) 没有办法像这样匹配字典键。我建议您重新考虑这个问题的数据结构。如果这必须非常快,你可以使用后缀树之类的东西。你想做什么还不完全清楚 您可以在dict中循环选择键,方法是: 您可以使用列表理解来获取所有匹配的值: >>> for key in dict1: ... if key.startswith("EMP$$"): ...

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

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

没有办法像这样匹配字典键。我建议您重新考虑这个问题的数据结构。如果这必须非常快,你可以使用后缀树之类的东西。

你想做什么还不完全清楚

您可以在
dict
中循环选择键,方法是:

您可以使用列表理解来获取所有匹配的值:

>>> for key in dict1:
...     if key.startswith("EMP$$"):
...         print "Found",key
...
Found EMP$$1
Found EMP$$2
Found EMP$$3
如果您只想知道某个密钥是否匹配,可以使用:


我觉得这种方法与词典的意图背道而驰

>>> any(key.startswith("EMP$$") for key in dict1)
True
字典是由哈希键组成的,这些哈希键具有与其相关联的值。这种结构的好处是它提供了非常快速的查找(按O(1)的顺序)。通过搜索钥匙,你否定了这一好处

我建议重新整理你的字典

>>> any(key.startswith("EMP$$") for key in dict1)
True
然后,查找“EMP$$”非常简单

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

你需要对你想做的事情更加具体。但是,假设您提供的词典:

if "EMP$$" in dict1:
    #etc...
如果您想在尝试请求特定密钥之前知道该密钥是否存在,您可以:

 dict1={"EMP$$1":1, "EMP$$2":2, "EMP$$3":3}
返回
True
,因为
dict1
具有a键
EMP$$1

您也可以忘记检查键,而依赖默认返回值
dict1.get()

默认情况下,返回
0
,因为
dict1
没有键
EMP$$5

同样,您也可以使用“try/except/structure”来捕捉和处理丢失的关键点:

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

这个问题的其他答案也很好,但我们需要更多的信息才能更精确。

您可以在字符串操作符中使用
,检查项目是否在另一个字符串中。dict1迭代器返回键列表,所以您可以根据每个dict1.key的值检查“EMP$$”

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

你想做什么还不完全清楚。你能重新措辞你的问题吗?提供示例输入和输出会有所帮助。我在您的第一个示例中尝试了这一点,并在后面添加了一个else,if part条件似乎是错误的……我尝试了这种方法,它按照作者的意图工作。添加一个else对我也很有用。你犯了什么错误?SilentGhost是正确的。使用“dict中的key”形式,而不是dict.has_key(key)。
dict1.get('EMP$$5',0)
0
try:
    dict1['EMP$$5']
except KeyError, e:
    # Code to deal w key error
    print 'Trapped key error in dict1 looking for %s' % e
dict1 = {"EMP$$1": 1, "EMP$$2": 2, "EMP$$3": 3}

print(any("EMP$$" in i for i in dict1))
# True

# testing for item that doesn't exist
print(any("AMP$$" in i for i in dict1))
# False