排序元组列表

时间:2014-10-03 17:56:04

标签: python list sorting tuples

我正在尝试对元组列表进行排序。每个元组包含第0个位置的字符串和第1个位置的列表。例如:("Billy", ['a','b','c'])。我希望按照各自列表的长度排列这个元组列表。

例如,

[("Alice", ["x","y"]), ("Billy",['a','b','c']), ("Charles", []), ("Dan", [23])]

将排序为

[("Billy",['a','b','c']), ("Alice", ["x","y"]), ("Dan", [23]), ("Charles", [])]

我如何在Python中解决这个问题?

1 个答案:

答案 0 :(得分:2)

使用key中的sort参数(就地)或sorted(返回列表)按列表长度排序。

l = [("Alice", ["x","y"]), ("Billy",['a','b','c']), ("Charles", []), ("Dan", [23])]

>>> sorted(l, key = lambda i: len(i[1]))
[('Charles', []), ('Dan', [23]), ('Alice', ['x', 'y']), ('Billy', ['a', 'b', 'c'])]

如果你想要最长到最短,也要通过reverse = True

>>> sorted(l, key = lambda i: len(i[1]), reverse=True)
[('Billy', ['a', 'b', 'c']), ('Alice', ['x', 'y']), ('Dan', [23]), ('Charles', [])]