我想尝试以下' tupled'列表从最小到最大:
tuple1
:
[('Bread', 3.1), ('Cheese', 8.2), ('Milk', 6.1), ('Pasta', 4.5) ...
我喜欢按整数对元组进行排序,按升序排列 - 我尝试了以下内容:
>>> sortedTuple = tuple1.sort(key=lambda x: (x[0],int(x[1]))
但是,我收到以下输出:
None
我的预期输出是:
[('Bread', 3.1), ('Pasta', 4.5), ('Milk', 6.1), ('Cheese', 8.2)...
答案 0 :(得分:3)
您可以使用sorted
内置功能。</ p>
from operator import itemgetter
In [268]: tuple1
Out[268]: [('Bread', 3.1), ('Cheese', 8.2), ('Milk', 6.1)]
In [270]: res = sorted(tuple1, key=itemgetter(1))
In [271]: res
Out[271]: [('Bread', 3.1), ('Milk', 6.1), ('Cheese', 8.2)]
key=itemgetter(1)
与key=lambda x:x[1]
的含义相同,也就是说元组的第二个元素将用作排序键。但它应该更快。
如果您愿意,以下是关于使用itemgetter(x)
代替[x]
的讨论:
Why should I use operator.itemgetter(x) instead of [x]?
答案 1 :(得分:3)
像这样使用sorted()
:
>>> tuples_list = [('Bread', 3.1), ('Cheese', 8.2), ('Milk', 6.1), ('Pasta', 4.5)]
>>> sorted(tuples_list, key=lambda item: item[1])
[('Bread', 3.1), ('Pasta', 4.5), ('Milk', 6.1), ('Cheese', 8.2)]
sorted()
接受第二个参数,即key
,在这种情况下,我们使用lambda
根据每个参数(item[1]
)对列表进行排序元组。默认情况下,将使用第一个项目(item[0]
)。
答案 2 :(得分:0)
>>>
[('Bread', 3.1), ('Pasta', 4.5), ('Milk', 6.1), ('Cheese', 8.2)]
>>>
输出:
<collection shelf="New Arrivals">
<movietitle="Enemy Behind">
<type>War, Thriller</type>
<format>DVD</format>
<year>2003</year>
<rating>PG</rating>
<stars>10</stars>
<description>Talk about a US-Japan war</description>
</movie>
<movietitle="Transformers">
<type>Anime, Science Fiction</type>
<format>DVD</format>
<year>1989</year>
<rating>R</rating>
<stars>8</stars>
<description>A schientific fiction</description>
</movie>
<movietitle="Trigun">
<type>Anime, Action</type>
<format>DVD</format>
<episodes>4</episodes>
<rating>PG</rating>
<stars>10</stars>
<description>Vash the Stampede!</description>
</movie>
<movietitle="Ishtar">
<type>Comedy</type>
<format>VHS</format>
<rating>PG</rating>
<stars>2</stars>
<description>Viewable boredom</description>
</movie>
</collection>