我有list
重复dict
。我想过滤掉每个dict
的一些元素。我可以通过遍历整个list
来完成此操作,并选择所需的元素,如下例所示。但是,这似乎不是一种有效的方法。在内存使用和速度方面,如下所示,实现所需结果的最佳方法是什么?
listOfDic = [
{'firstElement': 'a', 'secondElement': '1', 'thirdElement': 'i'}
, {'firstElement': 'b', 'secondElement': '2', 'thirdElement': 'ii'}
, {'firstElement': 'c', 'secondElement': '3', 'thirdElement': 'iii'}
]
filteredListOfDic = []
# looping through old list, selecting first and third element
# and using those elements for building a new "filtered" list of dict
for row in listOfDic:
filteredListOfDic.append({
'firstElement': row['firstElement']
, 'thirdElement': row['thirdElement']
})
print filteredListOfDic
结果是:
[{'thirdElement': 'i', 'firstElement': 'a'}
, {'thirdElement': 'ii', 'firstElement': 'b'}
, {'thirdElement': 'iii', 'firstElement': 'c'}]
答案 0 :(得分:2)
我想一个简单的del
足以删除每个字典中的元素,而不是复制所需的元素。
for l in listOfDic:
del l["secondElement"]
>>> print listOfDic
>>> [{'thirdElement': 'i', 'firstElement': 'a'}, {'thirdElement': 'ii', 'firstElement': 'b'}, {'thirdElement': 'iii', 'firstElement': 'c'}]
答案 1 :(得分:1)
如果您需要保留字典,可以使用简单列表理解创建一个新字典:
Vehicle
编辑:对于那些在使用列表理解时可疑性能提升的人:
filteredListOfDic = [{"firstElement": row["firstElement"], "thirdElement": row['thirdElement']} for row in listOfDic]
这快了近40%。