2014-10-03 140 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', [])]