过滤dict只包含某些键?

  • 问题:
  • 我有一个dict它有一大堆条目。我只对其中几个感兴趣。有没有一种简单的方法可以把其他的都剪掉?在

  • 答案:
  • 构建新的dict:

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

    使用字典理解。在

    如果您使用的版本缺少它们(即python2.6及更早版本),请将其设为dict((your_key,old_dict[your_key])for…。虽然更丑,但还是一样

    请注意,与jnnnnn的版本不同,对于任何大小的old\u dict来说,它具有稳定的性能(仅取决于_键的数量)。无论是速度还是记忆力。因为这是一个生成器表达式,它一次只处理一个项,并且它不会查看所有旧项

    将所有东西移到原位:

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