dict1=({"EMP$$1":1,"EMP$$2":2,"EMP$$3":3})
在字典中的關鍵模式如何檢查是否EMP使用python檢查在python
dict1.get("EMP##") ??
dict1=({"EMP$$1":1,"EMP$$2":2,"EMP$$3":3})
在字典中的關鍵模式如何檢查是否EMP使用python檢查在python
dict1.get("EMP##") ??
這並不完全清楚你想要做什麼。
您可以通過在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
我曾嘗試過,因爲在你的第一個例子中,我放了一個else後,如果部分條件似乎是錯誤的... – Rajeev 2010-09-17 14:18:35
我試過這種方法,它的工作原理是作者的意圖。添加一個else也適用於我。你遇到了什麼錯誤? – 2010-09-17 14:35:19
有沒有辦法來匹配字典鍵像這樣存在於字典。我建議你重新考慮這個問題的數據結構。如果這必須更加快速,你可以使用類似後綴樹的東西。
這種方法讓我覺得與字典的意圖相反。
字典是由散列鍵構成的,散列鍵具有與它們相關聯的值。這種結構的好處是它提供了非常快速的查找(按照O(1)的順序)。通過搜索關鍵字,你會否定這種好處。
我會建議重新組織你的字典。
dict1 = {"EMP$$": {"1": 1, "2": 2, "3": 3} }
然後,找到「EMP $$」很簡單,只要
if "EMP$$" in dict1:
#etc...
你需要很多更具體和你想要做什麼。但是,假設字典,你給:
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
其他的答案對這個問題也很大,但我們需要更多的信息是更確切。
'.has_key'已棄用 – SilentGhost 2010-09-17 14:42:19
SilentGhost是正確的。使用'dict'鍵而不是dict.has_key(鍵)。 http://docs.python.org/library/stdtypes.html#dict.has_key – 2010-09-17 14:49:21
@SilentGhost - 謝謝,我會分階段那個。 – dtlussier 2010-09-17 16:28:59
這並不完全清楚你想要做什麼。你能改說你的問題嗎?提供樣本輸入和輸出將有所幫助。 – 2010-09-17 13:56:10