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)
什么是最有效的排序方式?
你可以很容易地得到一个排序的元组:
>>> 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)
你不能对元组进行排序.
你可以做的是使用sorted(),它不会对元组进行排序,但会从你的元组创建一个排序列表.如果你真的需要一个排序的元组,那么你可以将sort作为一个元组转换为:
mytuple = tuple(sorted(mytuple, key=lambda row: row[1]))
Run Code Online (Sandbox Code Playgroud)
这可能是浪费内存,因为您正在创建一个列表然后丢弃它(并且还丢弃原始元组).你有可能不需要元组.更有效的方法是从列表开始并对其进行排序.