关于字典:python迭代删除具有键值的字典

python iteratively deleting dictionaries with key value

本问题已经有最佳答案,请猛点这里访问。

如果我想迭代一组字典,删除所有某个键的值为零的字典,我该怎么做呢?我最初尝试了下面的代码,但在很多情况下显然不起作用,因为随着对象的删除,组的长度会减小。

1
2
3
4
5
data = [{'symbol': 'AA', 'sum': 0}, {'symbol': 'BB', 'sum': 0}, {'symbol': 'CC', 'sum': 10}]

for i in range (0, len(data)):
        if data[i]["sum"] == 0:
            del data[i]

在浏览列表时从列表中删除元素并不是一个好主意。

一个很好的方法是:

1
2
data = [{'symbol': 'AA', 'sum': 0}, {'symbol': 'BB', 'sum': 0}, {'symbol': 'CC', 'sum': 10}]
data = [x for x in data if x['sum'] != 0]

这样我们就可以根据我们在data中已有的所有项目创建一个列表,如果项目为[总和]!= 0