小能豆

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

javascript

我有一个dict包含大量条目的数据。我只对其中的几个感兴趣。有没有简单的方法可以删除所有其他条目?


阅读 65

收藏
2024-07-20

共1个答案

小能豆

是的,您可以使用字典推导式创建一个仅包含您感兴趣的键的新字典。以下是实现此目的的简洁而有效的方法:

例子

假设您有以下词典:

original_dict = {
    'key1': 'value1',
    'key2': 'value2',
    'key3': 'value3',
    'key4': 'value4'
}

并且您只想保留键为“key1”和“key3”的条目。您可以创建一个仅包含这些键的新字典:

keys_of_interest = ['key1', 'key3']

pruned_dict = {key: original_dict[key] for key in keys_of_interest if key in original_dict}

print(pruned_dict)

解释

  • 字典理解:字典理解不断迭代keys_of_interest并构建一个仅包含指定键的新字典。
  • 条件:条件if key in original_dict确保仅包含存在的键original_dict,以防止KeyError找不到键的情况。

完整代码示例

original_dict = {
    'key1': 'value1',
    'key2': 'value2',
    'key3': 'value3',
    'key4': 'value4'
}

keys_of_interest = ['key1', 'key3']

# Pruning the dictionary
pruned_dict = {key: original_dict[key] for key in keys_of_interest if key in original_dict}

print(pruned_dict)
# Output: {'key1': 'value1', 'key3': 'value3'}

替代方法:使用dictfromkeys方法

dict.fromkeys实现此目的的另一种方法是使用字典理解,特别是当您确定所有键都存在于原始字典中时:

keys_of_interest = ['key1', 'key3']

pruned_dict = {key: original_dict[key] for key in dict.fromkeys(keys_of_interest)}

print(pruned_dict)

此方法更紧凑一些,但假设 中的所有键都keys_of_interest存在于 中original_dict。如果任何键不存在,它将引发KeyError

概括

通过使用字典推导,您可以有效地修剪字典以仅包含您感兴趣的键。这种方法很简洁,并利用 Python 强大的推导功能来获得简洁的代码。

2024-07-20