如何根据键列表复制字典并保留指定键对应的条目?
如何便捷复制字典并仅保留所需条目?
哈哈,这个问题我刚入门Python时也踩过同样的坑!直接用列表list_of_keys当字典索引mydict[list_of_keys]肯定行不通,Python字典根本不支持这种语法~ 给你分享几个实用又Pythonic的方法,轻松生成你想要的newdict:
方法1:字典推导式(最推荐)
这是最简洁高效的写法,也是社区里最常用的方案:
mydict = {'A':'dog', 'B':'cat', 'C':'mouse'} list_of_keys = ['A', 'B'] newdict = {key: mydict[key] for key in list_of_keys}
如果担心list_of_keys里有字典不存在的键(会触发KeyError),可以加个判断过滤掉:
newdict = {key: mydict[key] for key in list_of_keys if key in mydict}
方法2:用dict()构造器+生成器表达式
这是Python 2时代流传下来的写法,Python 3里也兼容,适合习惯用构造器的同学:
newdict = dict((key, mydict[key]) for key in list_of_keys)
方法3:借助filter()函数过滤键值对
如果你喜欢用内置函数处理,也可以这么写,但性能上比推导式稍逊(因为要遍历字典所有键值对):
newdict = dict(filter(lambda item: item[0] in list_of_keys, mydict.items()))
额外小技巧:安全处理不存在的键
如果list_of_keys里可能包含字典没有的键,又不想报错,用get()方法可以给不存在的键设默认值(比如None):
newdict = {key: mydict.get(key, None) for key in list_of_keys}
内容的提问来源于stack exchange,提问作者Artur Müller Romanov
相关产品推荐
相关产品推荐

