如何使用重复键和不同的值过滤掉词典列表中的元素?

时间:2017-02-18 17:57:08

标签: python python-2.7

我有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'}]

2 个答案:

答案 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%。