我试图根据数字的值对这个元组进行排序,以便按降序重新排列:
l =[('orange', '3.2'), ('apple', '30.2'), ('pear', '4.5')]
如:
l2 =[('apple', '30.2'), ('pear', '4.5'), ('orange', '3.2')]
我试着用这个来分类:
l2 = ((k,sorted(l2), key=lambda x: float(x[1]), reverse=True)))
[value for pair in l2 for value in pair]
但我得到了错误信息:
TypeError: float() argument must be a string or a number, not 'tuple'
我如何纠正这一点,以便我可以指出,我想要排序的数字在每对?Python语法仍然让我很困惑,因为我对它非常陌生。任何帮助都将不胜感激。
发布于 2013-11-19 07:38:21
你把语法搞得乱七八糟,差一点就到了。这样做是可行的:
l2 = sorted(l, key=lambda x: float(x[1]), reverse=True)
例如,调用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')]
您还可以就地对列表进行排序:
l.sort(key=lambda x: float(x[1]), reverse=True)
使用相同的两个关键字参数。
https://stackoverflow.com/questions/20075675
复制