通过float元素对元组进行排序

use*_*918 2 python sorting tuples python-3.x

我试图通过数字的值对此元组进行排序,以便按降序重新排列:

l =[('orange', '3.2'), ('apple', '30.2'), ('pear', '4.5')]
Run Code Online (Sandbox Code Playgroud)

如:

l2 =[('apple', '30.2'), ('pear', '4.5'), ('orange', '3.2')]
Run Code Online (Sandbox Code Playgroud)

我试图用它来排序它:

l2 = ((k,sorted(l2), key=lambda x: float(x[1]), reverse=True)))
       [value for pair in l2 for value in pair]
Run Code Online (Sandbox Code Playgroud)

但我收到错误消息:

TypeError: float() argument must be a string or a number, not 'tuple'
Run Code Online (Sandbox Code Playgroud)

我如何纠正这一点,以便我可以表明我想按每对中的数字排序?Python语法仍然让我很困惑,因为我对它很新.任何帮助,将不胜感激.

Mar*_*ers 10

你搞砸了语法; 你快到了.这有效:

l2 = sorted(l, key=lambda x: float(x[1]), reverse=True)
Run Code Online (Sandbox Code Playgroud)

例如,调用sorted()函数,并传入列表作为第一个参数排序.另外两个参数是关键字参数(key,和reverse).

演示:

>>> l = [('orange', '3.2'), ('apple', '30.2'), ('pear', '4.5')]
>>> sorted(l, key=lambda x: float(x[1]), reverse=True)
[('apple', '30.2'), ('pear', '4.5'), ('orange', '3.2')]
Run Code Online (Sandbox Code Playgroud)

您还可以就地对列表进行排序:

l.sort(key=lambda x: float(x[1]), reverse=True)
Run Code Online (Sandbox Code Playgroud)

使用相同的两个关键字参数.