检查的主要模式在Python中的字典

问题描述 投票:6回答:5
    dict1=({"EMP$$1":1,"EMP$$2":2,"EMP$$3":3})

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

   dict1.get("EMP##") ??
python dictionary
5个回答
21
投票

这不是完全清楚你想要做什么。

你可以遍历在dict选择键的按键使用the startswith() method

>>> 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]

如果你只是想知道,如果一个关键的比赛,你可以使用the any() function

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

6
投票

这种做法在我看来是违背了字典的意图。

字典是由它曾与他们相关的值散列键。这种结构的好处是,它提供了非常快速的查找(O(1)的数量级上)。通过键搜索,你否定有好处。

我建议你重新组织的字典。

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

然后,找到“EMP $$”就是这么简单

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

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:
    dict1['EMP$$5']
except KeyError, e:
    # Code to deal w key error
    print 'Trapped key error in dict1 looking for %s' % e

另外这个问题的答案也大,但我们需要更多的信息更加精确。


0
投票

有没有办法来匹配字典的键这样的。我建议你重新考虑你的数据结构这个问题。如果这必须是额外快,你可以使用像一个后缀树。


0
投票

您可以使用检查,如果产品在另一个字符串in字符串操作。 dict1迭代器返回键列表,让你勾选“EMP $$”对每个dict1.key的。

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
© www.soinside.com 2019 - 2024. All rights reserved.