2015-02-11 45 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

相关问题