python中未按数字排序的元组列表

Posted

技术标签:

【中文标题】python中未按数字排序的元组列表【英文标题】:List of tuples not sorted numerically in python 【发布时间】:2022-01-21 06:24:34 【问题描述】:

当我使用此函数按数值降序对元组列表进行排序时:

data.sort(key=lambda tup: tup[1], reverse=True)

我的列表中有这样的元组顺序:

data = [("a", 8001),
        ("b", 8000),
        ("c", 8),
        ("d", 10)]

它是按字母排序的,而不是数字。 8 > 10,因为 8 大于 10 的第一个字母,即 1。

如何按数字降序对元组列表进行排序?

【问题讨论】:

您的代码看起来不错?您在排序到位后检查data 的顺序以检查它是否有效? 你确定你有整数,而不是字符串“8001”、“8000”、“8”和“10”吗?字符串不是整数,它们的排序方式不同。 【参考方案1】:

原始代码运行良好

>>> data = [("a", 8001),
...         ("b", 8000),
...         ("c", 8),
...         ("d", 10)]
>>>
>>> data
[('a', 8001), ('b', 8000), ('c', 8), ('d', 10)]
>>> data.sort(key=lambda tup: tup[1], reverse=True)
>>>
>>> data
[('a', 8001), ('b', 8000), ('d', 10), ('c', 8)]

【讨论】:

以上是关于python中未按数字排序的元组列表的主要内容,如果未能解决你的问题,请参考以下文章

对化学和系数的元组进行排序[重复]

python中的元组分组列表

元组对,使用 python 找到最小值

对具有名称的元组列表进行排序[重复]

Python有序元组列表按绝对值排序

Python中的元组(Tuple)