How to filter a dict to contain only keys in a given list?
本问题已经有最佳答案,请猛点这里访问。
对于python和stackoverflow都是非常新的。谢谢你的耐心和帮助。
我想根据如下列表的内容筛选dict:
1 2 3 4 5 | d={'d1':1, 'd2':2, 'd3':3} f = ['d1', 'd3'] r = {items of d where the key is in f} |
这是荒谬的吗?如果不是,正确的语法是什么?
谢谢你的帮助。
文森特
假设您想创建一个新字典(无论出于什么原因):
1 2 3 4 5 6 | 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 |
您可以通过列表理解对列表进行迭代,并在字典中查找键,例如
1 | aa = [d[k] for k in f] |
下面是一个成功的例子。
1 2 3 4 5 | >>> d = {'k1': 1, 'k2': 2, 'k3' :3} >>> f = ['k1', 'k2'] >>> aa = [d[k] for k in f] >>> aa [1, 2] |
如果要根据结果重新构造字典,可以捕获元组列表中的键并转换为dict,例如。
1 | aa = dict ([(k, d[k]) for k in f]) |
更新版本的python(特别是2.7、3)有一个称为dict理解的特性,它可以一键完成所有的工作。在这里更深入地讨论。