将元组从最小数量排序到最大数量

时间:2016-12-09 11:11:40

标签: python python-2.7 sorting tuples

我想尝试以下' 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)...

3 个答案:

答案 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>