从dict python列表中删除所有出现的内容

gon*_*lop -1 python dictionary numpy list scipy

我有这个代码:

>>> my_list = [
...     {'key1': 1, 'key2': 1., 'key3': 'a'},
...     {'key1': 0, 'key2': 0., 'key3': 'b'}
... ]
>>> 
Run Code Online (Sandbox Code Playgroud)

我需要从my_list中删除所有出现的键(即'key2'):

>>> my_list = [
...     {'key1': 1, 'key3': 'a'},
...     {'key1': 0, 'key3': 'b'}
... ]
>>> 
Run Code Online (Sandbox Code Playgroud)

什么是最pythonic和更快的模式呢?

附加说明:'my_list'实际上是一个包含更多行的列表,每个dict都有几十个键.

Ste*_*sop 5

for my_dict in my_list:
    my_dict.pop('key2', None)
Run Code Online (Sandbox Code Playgroud)

您也可以删除密钥del,但除非您确定它存在于每个字典中,否则您需要明确检查密钥是否存在:

for my_dict in my_list:
   if 'key2' in my_dict:
       del my_dict['key2']
Run Code Online (Sandbox Code Playgroud)

要么:

for my_dict in my_list:
   try:
       del my_dict['key2']
   except KeyError:
       pass
Run Code Online (Sandbox Code Playgroud)

最后一段代码是"Pythonic"原则的一个例子,"请求宽恕比允许更容易",这意味着人们应该优先处理异常,而不是事先做好工作以防止它们发生.然而,这并不是原理的一个很好的例子,因为在这种情况下,它的代码更清晰,没有明显的好处.