从列表中删除字典

问题描述 投票:1回答:4

我有以下列表:

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

我怎样才能将它转换成这个?

items = [1, 2, 3]

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

items = [item['item'] for item in items]
python
4个回答
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
投票

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

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

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


0
投票

这是我在交互式shell上执行的一个简单的解决方案,您可以将其实现到您的代码中。

>>> a = []
>>> for i in items:
...     a.append(i['item'])
... 
>>> a
[1, 2, 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()]
© www.soinside.com 2019 - 2024. All rights reserved.