【发布时间】:2020-09-11 17:49:03
【问题描述】:
我有一本字典d = {'key1' : 1, 'key2' : 2, 'key3' : 3}
和一个列表lst = ['key1','key2']
如何过滤字典以仅包含列表中的键,以便获得d = {'key1' : 1, 'key2' : 2}?
【问题讨论】:
标签: python list dictionary join filter
我有一本字典d = {'key1' : 1, 'key2' : 2, 'key3' : 3}
和一个列表lst = ['key1','key2']
如何过滤字典以仅包含列表中的键,以便获得d = {'key1' : 1, 'key2' : 2}?
【问题讨论】:
标签: python list dictionary join filter
简单地说:
d2 = {k:d[k] for k in lst}
但所有键都必须存在于源目录中。如果没有:
d2 = {k:d[k] for k in lst if k in d}
【讨论】:
lst 中的每个元素也是一个键时才有效。从 OP 我不清楚是否是这种情况。
dict(filter(lambda x: x[0] in lst, d.items()))
【讨论】:
索洛多洛先生
试试这个,
data = [d[k] for k in list]
如果你想从结果中重建字典,你也可以在元组列表中捕获键并转换为字典,例如
data = dict ([(k, d[k]) for k in list])
【讨论】:
target_set = set(lst)
d2 = {k:v for k,v in d.items() if k in target_set}
d2
Out[23]: {'key1': 1, 'key2': 2}
【讨论】: