【发布时间】:2015-04-12 07:25:40
【问题描述】:
我有一个表示字典值的列表。我正在尝试解析字典以查找也在我的列表中的值,并从中创建一个仅包含匹配值的新字典:
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}
但是,我得到的只是:
{}
谁能告诉我哪里出错了?
【问题讨论】:
-
不应该是
if v in a吗? -
dict((k, v) for k, v in b.iteritems() if k in a)是 Python 2.6 语法。除非您碰巧使用的是旧版本,否则现代解决方案是使用字典理解:{k:v for k, v in b.iteritems() if k in a}。 -
如果性能对您很重要,
a应该是set。
标签: python list python-2.7 dictionary