我正在尝试对元组列表进行排序。每个元组包含第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中解决这个问题?
答案 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', [])]