过滤字典以仅包含某些键?

新手上路,请多包涵

我有一个 dict 有一大堆条目。我只对其中的一小部分感兴趣。有没有简单的方法来修剪所有其他的?

原文由 mpen 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 390
2 个回答

构建一个新的字典:

 dict_you_want = {key: old_dict[key] for key in your_keys}

使用词典理解。

如果您使用缺少它们的版本(即 Python 2.6 和更早版本),请将其 dict((key, old_dict[key]) for ...) 。它是一样的,虽然更丑陋。

请注意,与 jnnnnn 的版本不同,它对于任何大小的 old_dict 具有稳定的性能(仅取决于 your_keys 的数量)。无论是速度还是内存。由于这是一个生成器表达式,它一次处理一个项目,它不会查看 old_dict 的所有项目。

就地删除所有内容:

 unwanted = set(keys) - set(your_dict)
for unwanted_key in unwanted: del your_dict[unwanted_key]

原文由 user395760 发布,翻译遵循 CC BY-SA 4.0 许可协议

稍微更优雅的字典理解:

 foodict = {k: v for k, v in mydict.items() if k.startswith('foo')}

原文由 ransford 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏