检查python中字典中的键模式

时间:2010-09-17 13:42:24

标签: python dictionary

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

如何使用python

检查字典中是否存在EMP
   dict1.get("EMP##") ??

5 个答案:

答案 0 :(得分:21)

目前还不完全清楚你想做什么。

您可以使用the startswith() method

循环浏览dict选择键中的键
>>> 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

答案 1 :(得分:6)

这种做法让我觉得与字典的意图相反。

字典由具有与之关联的值的散列键组成。这种结构的好处是它提供了非常快速的查找(大约为O(1))。通过搜索键,你就是在否定这种好处。

我建议你重组字典。

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

然后,找到“EMP $$”就像

一样简单
if "EMP$$" in dict1:
    #etc...

答案 2 :(得分:2)

您需要更加具体地了解自己想要做的事情。但是,假设您提供的词典:

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

如果您想在尝试请求之前知道某个特定密钥是否存在,您可以:

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

返回Truedict1的密钥为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

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

您可以使用--------------------------------------------------------------------------- WebDriverException Traceback (most recent call last) <ipython-input-297-41c52a12ba91> in <module>() ----> 1 browser.get(asd) /anaconda3/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py in get(self, url) 331 Loads a web page in the current browser session. 332 """ --> 333 self.execute(Command.GET, {'url': url}) 334 335 @property /anaconda3/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py in execute(self, driver_command, params) 319 response = self.command_executor.execute(driver_command, params) 320 if response: --> 321 self.error_handler.check_response(response) 322 response['value'] = self._unwrap_value( 323 response.get('value', None)) /anaconda3/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py in check_response(self, response) 240 alert_text = value['alert'].get('text') 241 raise exception_class(message, screen, stacktrace, alert_text) --> 242 raise exception_class(message, screen, stacktrace) 243 244 def _value_or_default(self, obj, key, default): WebDriverException: Message: unknown error: unsupported protocol (Session info: chrome=71.0.3578.98) (Driver info: chromedriver=2.45.615355 (d5698f682d8b2742017df6c81e0bd8e6a3063189),platform=Mac OS X 10.13.6 x86_64) 字符串运算符检查项目是否在另一个字符串中。 dict1迭代器返回密钥列表,因此您要检查每个dict1.key的“ EMP $$”。

in