我有以下列表:
items = [{'item': 1}, {'item': 2}, {'item': 3}]
我怎样才能将它转换成这个?
items = [1, 2, 3]
这是我目前的解决方案,但我想知道是否有更好的解决方案
items = [item['item'] for item in items]
你做对了,你只能使用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']
不确定这是否比您的解决方案更好,但您可以使用itemgetter
import operator
map(operator.itemgetter('item'), items)
在python 3.x中,你需要将结果转换为list
。
这是我在交互式shell上执行的一个简单的解决方案,您可以将其实现到您的代码中。
>>> a = []
>>> for i in items:
... a.append(i['item'])
...
>>> a
[1, 2, 3]
好吧,没有明确不得不用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()]