2010-07-19 51 views
1

我需要檢查某個字典中是否存在特定的鍵。我可以使用has_key?有沒有其他的方法來比較列表的項目與字典的關鍵。我有一個像...的列表[(3,4),(4,5)..] 我需要檢查(3,4)是否在字典中。列表元素與字典鍵之間的比較

+0

'對象的has_key()'在更高版本的Python 2的棄用,在Python 3,使用邁克爾·安德森的解決方案已被刪除。 – 2010-07-19 06:33:43

回答

1

「正確」的方法是使用in運算符,就像其他答案提到的一樣。這適用於任何可迭代的東西,當你可以通過散列來查找時(例如字典和集合),你會獲得一些速度增益。還有一種較舊的方法,它只適用於字典,即has_key方法。我通常不會在這些日子裏看到它,而且速度也會變慢(但不是太多)。

>>> timeit.timeit('f = {(1,2) : "Foo"}; f.has_key((1,2))') 
0.27945899963378906 
>>> timeit.timeit('f = {(1,2) : "Foo"}; (1,2) in f') 
0.22165989875793457 
+0

如何使用In運算符? – Shilpa 2010-07-19 06:41:07

+0

查看其他答案和我的代碼片段。 – 2010-07-19 06:47:45

4

這樣的事情?

>>> d = { (1,3):"foo", (2,6):"bar" } 
>>> print (1,3) in d 
True 
>>> print (1,4) in d 
False 
>>> L = [ (1,3), (1,4), (15) ] 
>>> print [ x in d for x in L ] 
[True, False, False] 

如果你想添加缺少的條目,你需要一個明確的循環

for x in L: 
    if x not in d: 
    d[x]="something" 
+0

如果我想檢查一下,如果一個關鍵詞在口述中可用或者沒有......如果不是......那麼將該關鍵字添加到詞典中......? – Shilpa 2010-07-19 06:34:24

+0

這是一個新問題,但請看'setdefault()'方法。 http://docs.python.org/library/stdtypes.html?highlight=setdefault#dict.setdefault – 2010-07-19 06:36:26

+0

如何更新method.I認爲,如果密鑰已經存在在字典中,它會把該密鑰的另一個值,所以我們通過更新方法得到多個條目。 – Shilpa 2010-07-19 06:40:03

0

dictionary.keys()返回鍵列表 您就可以使用if (3,4) in d.keys()

+0

沒有必要。應用於字典時的'in'運算符將查看字典的鍵。 – 2010-07-19 06:35:06