【发布时间】:2017-11-23 02:03:18
【问题描述】:
假设我有一本如下所示的字典:
{1=>a, 2=>b, 3=>c, 4=>d}
还有一个如下所示的列表:
[1, 2, 3]
有没有一种方法可以返回一个只包含的子字典
{1=>a, 2=>b, 3=>c}
【问题讨论】:
标签: python python-2.7 python-3.x
假设我有一本如下所示的字典:
{1=>a, 2=>b, 3=>c, 4=>d}
还有一个如下所示的列表:
[1, 2, 3]
有没有一种方法可以返回一个只包含的子字典
{1=>a, 2=>b, 3=>c}
【问题讨论】:
标签: python python-2.7 python-3.x
常规的 dict-comprehension 会做到这一点:
d = {1: 'a', 2: 'b', 3: 'c', 4: 'd'}
keys = [1, 2, 3]
dct = {key: d[key] for key in keys}
print(dct) # {1: 'a', 2: 'b', 3: 'c'}
有两种方法可以处理keys 中不在原始字典中的键:
keys = [1, 2, 3, 7]
# default value None
dct = {key: d[key] if key in d else None for key in keys}
print(dct) # {1: 'a', 2: 'b', 3: 'c', 7: None}
# ignore the key if it is not in the original dict
dct = {key: d[key] for key in set(keys).intersection(d.keys())}
print(dct) # {1: 'a', 2: 'b', 3: 'c'}
【讨论】: