我有以下列表:
items = [{'item': 1}, {'item': 2}, {'item': 3}]
如何将其转换为此?
items = [1, 2, 3]
这是我目前的解决方案,但我想知道是否有更好的解决方法
items = [item['item'] for item in items]
答案 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()]