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