从字典键视图中删除键

时间:2020-08-02 14:23:39

标签: python python-3.x dictionary

这可能是一个非常基本的问题,但是很难找到正确的答案。我有一个名为raw_data的Python字典,并按以下步骤分别提取密钥:

features = raw_data.keys()

键的一些特定元素需要删除。

del features[137]
del features[160]
del features[181]

但是上面的代码会引发错误:

'dict_keys' object doesn't support item deletion

删除键表单字典键对象的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

'dict_keys'是 view 对象。

它提供有关字典条目的动态视图,这意味着当字典发生更改时,视图会反映这些更改。 https://docs.python.org/3/library/stdtypes.html#dictionary-view-objects

因此,在不更改字典本身的情况下删除 view 中的键是没有意义的。要删除字典本身中的键,请参阅@ailin的答案。删除字典中的键之后,这些键也将在dict_keys-view对象中删除。

但是,如果您只想要具有相关键的列表,则可以将dict_keys对象转换为列表并进行过滤,也可以直接遍历dict_keys对象并过滤不需要的对象。

relevant_keys = [x for x in features if x not in [137, 160, 181]]