根据键列表过滤字典

时间:2020-05-25 05:47:46

标签: python list dictionary join filter

我有一本字典d = {'key1' : 1, 'key2' : 2, 'key3' : 3} 和列表lst = ['key1','key2']

如何过滤字典以仅在列表中包含键,以便获得d = {'key1' : 1, 'key2' : 2}

4 个答案:

答案 0 :(得分:3)

简单地:

d2 = {k:d[k] for k in lst}

但是所有键都必须存在于源目录中。如果没有:

d2 = {k:d[k] for k in lst if k in d}

答案 1 :(得分:2)

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}

答案 2 :(得分:2)

MrSoLoDoLo

尝试一下

data = [d[k] for k in list]

如果要从结果中重建字典,则还可以在元组列表中捕获键并将其转换为字典,例如

data = dict ([(k, d[k]) for k in list])

答案 3 :(得分:1)

dict(filter(lambda x: x[0] in lst, d.items()))