2013-04-23 75 views
0

問題Python的檢查列表項是下面的,例如:一個字符串

lst = ['2456', '1871', '187'] 

d = { 
    '1871': '1', 
    '2456': '0', 
} 

for i in lst: 
    if any(i in x for x in d.keys()): 
     print i 

% python test.py 
2456 
1871 
187 

所以,我需要得到所有這一切都包含在字典的鍵列表「LST」元素「 d「,沒有一個子串匹配,如果我做」打印d [i]「,我得到一個錯誤。

回答

3
>>> lst = ['2456', '1871', '187'] 
>>> d = { 
    '1871': '1', 
    '2456': '0', 
} 
>>> [x for x in lst if x in d] 
['2456', '1871'] 
+1

燁漂亮的快速查找起來會維持秩序和重複項... +1(雖然如果這並不重要。我看啊下一個最好的'set'樣的方法是'd.viewkeys()&lst') – 2013-04-23 09:11:30

0

使用sets

lst = ['2456', '1871', '187'] 
d = {'1871': '1', '2456': '0'} 

print(set(lst) & set(d.keys())) # prints '{'2456', '1871'}' 
0
>>> for i in li: 
    if i in d: 
     print "{0} => {1}".format(i,d[i]) 


2456 => 0 
1871 => 1 

在列表理解:

>>> [i for i in li if i in d] 
['2456', '1871'] 
1

此行應該做的工作:

l=[e for e in d if e in lst] 

與您的數據:

In [5]: l=[e for e in d if e in lst] 

In [6]: l 
Out[7]: ['2456', '1871'] 
相關問題