Vin*_*ent 8 python dictionary list filter
这两者都是Python和stackoverflow的新手.感谢您的耐心和帮助.
我想根据列表的内容过滤一个字典,如下所示:
d={'d1':1, 'd2':2, 'd3':3}
f = ['d1', 'd3']
r = {items of d where the key is in f}
Run Code Online (Sandbox Code Playgroud)
这是荒谬的吗?如果没有,那么正确的语法是什么?
谢谢您的帮助.
文森特
Fel*_*ing 16
假设您要创建一个新字典(无论出于何种原因):
d = {'d1':1, 'd2':2, 'd3':3}
keys = ['d1', 'd3']
filtered_d = dict((k, d[k]) for k in keys if k in d)
# or: filtered_d = dict((k, d[k]) for k in keys)
# if every key in the list exists in the dictionary
Run Code Online (Sandbox Code Playgroud)
您可以使用列表理解迭代列表并查找字典中的键,例如
aa = [d[k] for k in f]
Run Code Online (Sandbox Code Playgroud)
这是它的工作示例。
>>> d = {'k1': 1, 'k2': 2, 'k3' :3}
>>> f = ['k1', 'k2']
>>> aa = [d[k] for k in f]
>>> aa
[1, 2]
Run Code Online (Sandbox Code Playgroud)
如果您想从结果重建字典,您也可以捕获元组列表中的键并转换为字典,例如
aa = dict ([(k, d[k]) for k in f])
Run Code Online (Sandbox Code Playgroud)
Python 的最新版本(特别是 2.7、3)有一项称为字典理解的功能,只需一次即可完成所有操作。这里更深入地讨论。