我有一个如下所示的列表:
[(0.2, 'Item1'),(0.25,'Item2'),(0.23,'Item3')]
我想要一个看起来像这样的列表。
['Item1','Item2','Item3']
你能帮我吗?
答案 0 :(得分:3)
列表理解就是您所需要的:
[t[1] for t in inputlist]
选择每隔一个项目。或者,映射列表(Python 3在这里返回一个迭代器,所以要小心):
from operator import itemgetter
map(itemgetter(1), inputlist)
或者您可以使用-1
选择每个元组的 last 元素:
[t[-1] for t in inputlist]
或者你可以使用元组赋值:
[item for ratio, item in inputlist]
或者您可能会非常模糊并使用zip()
转置列和行:
zip(*inputlist)[-1]
虽然后者返回元组而不是列表。
演示:
>>> inputlist = [(0.2, 'Item1'), (0.25, 'Item2'), (0.23, 'Item3')]
>>> [t[1] for t in inputlist]
['Item1', 'Item2', 'Item3']
>>> from operator import itemgetter
>>> map(itemgetter(1), inputlist)
['Item1', 'Item2', 'Item3']
>>> [t[-1] for t in inputlist]
['Item1', 'Item2', 'Item3']
>>> [item for ratio, item in inputlist]
['Item1', 'Item2', 'Item3']
>>> zip(*inputlist)[-1]
('Item1', 'Item2', 'Item3')
答案 1 :(得分:2)
import operator
map(operator.itemgetter(-1), your_list)
演示:
>>> items = [(0.2, 'Item1'),(0,25,'Item2'),(0.23,'Item3')]
>>> import operator
>>> map(operator.itemgetter(-1), items)
['Item1', 'Item2', 'Item3']
另一种选择是列表理解:
>>> [x[-1] for x in items]
['Item1', 'Item2', 'Item3']
如果你的意思是(0.25, 'Item2')
而不是(0, 25, 'Item2')
,你也可以在下标/项目中使用1
(第二个元素)而不是-1
(最后一个元素)。< / p>
答案 2 :(得分:2)
列表理解应该没问题:
>>> [item for (num, item) in yourlist]
['Item1', 'Item2', 'Item3']
答案 3 :(得分:1)
>>> lst = [(0.2, 'Item1'), (0.25, 'Item2'), (0.23, 'Item3')]
>>> [x[1] for x in lst]
['Item1', 'Item2', 'Item3']
>>> [x for _,x in lst] # alternately
['Item1', 'Item2', 'Item3']
>>>
答案 4 :(得分:0)
items = [(0.2, 'Item1'), (0.25, 'Item2'), (0.23, 'Item3')]
print(dict(items).values())
['Item2', 'Item3', 'Item1']
如果需要物品的顺序:
from collections import OrderedDict
items = [(0.2, 'Item1'), (0.25, 'Item2'), (0.23, 'Item3')]
print(OrderedDict(items).values())
['Item1', 'Item2', 'Item3']