2015-02-11 43 views
1

我有一個表示字典值的列表。我試圖解析字典尋找那也是我的列表中的值,並從該只包含匹配的值創建一個新的字典:在新詞典中匹配dict和返回鍵/值對的列表值

a = [1, 2, 3] 
b = {"aye":1, "bee":2, "cee":3, "dee":4, "eee":5} 

new_dict = dict((k, v) for k, v in b.iteritems() if k in a) 
print new_dict 

我的期望輸出應該是這樣的:

new_dict = {"aye":1, "bee":2, "cee":3} 

然而,所有我得到的回覆是:

{} 

誰能告訴我在哪裏,我錯了?

+3

它不應該是'如果v在a'? – vaultah 2015-02-11 19:15:21

+2

'dict((k,v)for k,v in b.iteritems()if k in a)'是Python 2.6的語法。除非你碰巧使用舊版本,否則現代解決方案是使用詞典理解:'如果k在a中'{k:v for k,v在b.iteritems()中。 – iCodez 2015-02-11 19:19:04

+0

如果表現對你很重要,'a'應該是'set'。 – Akavall 2015-02-11 20:05:34

回答

3

k代表鍵和v

>>> a = [1, 2, 3] 
>>> b = {"aye":1, "bee":2, "cee":3, "dee":4, "eee":5} 
>>> new_dict = dict((k, v) for k, v in b.iteritems() if v in a) 
>>> print new_dict 
{'aye': 1, 'cee': 3, 'bee': 2} 

因此,因此實現你想要什麼,你需要做的,而不是if v in a

相關問題