从列表中删除字典

时间:2018-09-06 09:41:24

标签: python

我有以下列表:

items = [{'item': 1}, {'item': 2}, {'item': 3}]

如何将其转换为此?

items = [1, 2, 3]

这是我目前的解决方案,但我想知道是否有更好的解决方法

items = [item['item'] for item in items]

4 个答案:

答案 0 :(得分:2)

不确定这是否比您的解决方案更好,但是您可以使用itemgetter

import operator
map(operator.itemgetter('item'), items)

在python 3.x中,您需要将结果强制转换为list

答案 1 :(得分:1)

您做对了,您只能使用get()方法来改进代码:

items = [item.get('item', 'default') for item in items]

为没有item键的情况提供默认值的参数。

这将是示例:

items = [{'item': 1}, {'item': 2}, {'item': 3}, {'noitem': 4}]
[item.get('item', 'default') for item in items]
#[1, 2, 3, 'default']

答案 2 :(得分:0)

这是我在交互式外壳上所做的一个简单的解决方案,您可以将其实现为您的代码。

>>> a = []
>>> for i in items:
...     a.append(i['item'])
... 
>>> a
[1, 2, 3]

答案 3 :(得分:0)

好吧,而不必显式地用item调用该项目,这意味着字典的键可以是任何东西,您可以使用以下方法:

items = [{'item': 1}, {'item': 2}, {'item': 3}]
new_items = []
for item in items:
  for value in item.values():
    items.append(value)
items = new_items[:]

更新: 正如Martijn Pieters所建议的那样,关于理解的列表可以实现相同的目的:

items = [v for d in items for v in d.values()]