2014-10-03 99 views
-2

我试图通过元组列表进行排序。每个元组包含第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?

回答

2

使用sort(in-place)或sorted(返回一个列表)中的key参数按列表长度排序。

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', [])]