对包含列表的元组进行排序

Jon*_*ior 0 python sorting tuples list

我有一个类似的问题这一个,而是我的元组包含列表如下:

mytuple = (
 ["tomato", 3],
 ["say", 2],
 ["say", 5],
 ["I", 4],
 ["you", 1],
 ["tomato", 6],
)
Run Code Online (Sandbox Code Playgroud)

什么是最有效的排序方式?

Joe*_*eda 7

你可以很容易地得到一个排序的元组:

>>> sorted(mytuple)
[['I', 4], ['say', 2], ['say', 5], ['tomato', 3], ['tomato', 6], ['you', 1]]
Run Code Online (Sandbox Code Playgroud)

这将根据列表中的项目进行排序.如果前两个匹配,则比较第二个,等等.

如果您有不同的标准,则可以提供比较功能.

更新:作为评论者注意到,这将返回一个列表.你可以得到另一个这样的元组:

>>> tuple(sorted(mytuple))
(['I', 4], ['say', 2], ['say', 5], ['tomato', 3], ['tomato', 6], ['you', 1])
Run Code Online (Sandbox Code Playgroud)

  • 通过"得到一个排序的元组"你的意思是"创建一个已排序的新元组"? (3认同)

mlu*_*bke 5

你不能对元组进行排序.

你可以做的是使用sorted(),它不会对元组进行排序,但会从你的元组创建一个排序列表.如果你真的需要一个排序的元组,那么你可以将sort作为一个元组转换为:

mytuple = tuple(sorted(mytuple, key=lambda row: row[1]))
Run Code Online (Sandbox Code Playgroud)

这可能是浪费内存,因为您正在创建一个列表然后丢弃它(并且还丢弃原始元组).你有可能不需要元组.更有效的方法是从列表开始并对其进行排序.