gpt4 book ai didi

python - 按第一个元素 float 对包含字符串的元组列表进行排序 (Python)

转载 作者:太空宇宙 更新时间:2023-11-04 00:31:55 28 4
gpt4 key购买 nike

我有一长串元组:

[...
(0.862, 'beehive', 'bug'),
(0.12, 'yard', 'property'),
(0.0, 'lake', 'mailbox'),
(0.37, 'maintenance', 'shears'),
(0.1666, 'summer', 'popsicle'),
(0.9, 'poplar', 'tree')
...]

我需要按浮点值降序对这个列表进行排序。我知道 Python 会自动按第一个值对列表进行排序,但是即使我调用 sorted 甚至明确指定第一个元素,我也没有成功。

sorted(mylist) # doesn't sort the list at all

sorted(mylist, key = x[0]) # on this sort attempt I get "'str' object is not callable"

任何人都可以详细说明为什么尽管进行了这些排序尝试,列表仍然杂乱无章,以及什么可以按 float 降序排序?

最佳答案

sorted(..) 返回一个 列表。您正在寻找的是 .sort(..)就地对列表进行排序。

此外,您可以使用reverse 参数进行降序排序:

data.sort(reverse=True)  # sort the list inplace

这将返回:

>>> data.sort(reverse=True)
>>> data
[(0.9, 'poplar', 'tree'), (0.862, 'beehive', 'bug'), (0.37, 'maintenance', 'shears'), (0.1666, 'summer', 'popsicle'), (0.12, 'yard', 'property'), (0.0, 'lake', 'mailbox')]

元组的默认排序将首先对第一个元素排序。如果它们相等,它将考虑每个元组的第二个元素,依此类推。

如果你不想要这个决胜局,但在这种情况下使用原始顺序,你可以使用itemgetter作为:

from operator import itemgetter

data.sort(reverse=True,key=itemgetter(0)) # sort the list inplace

如果您想构建一个排序列表,您可以使用sorted(..)相同参数:

data_sorted = sorted(data,reverse=True)  # construct a new sorted list

关于python - 按第一个元素 float 对包含字符串的元组列表进行排序 (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45492181/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com