如何按給定索引處的元素對列表/元組進行排序(列表/元組)?

我在列表列表或元組列表中都有一些數據,以下所示: python

data = [[1,2,3], [4,5,6], [7,8,9]]
data = [(1,2,3), (4,5,6), (7,8,9)]

我想按子集中的第二個元素排序。 意思是,按2,5,8排序,其中2來自(1,2,3)5來自(4,5,6) 。 常見的作法是什麼? 我應該在列表中存儲元組或列表嗎? 數組


#1樓

from operator import itemgetter
data.sort(key=itemgetter(1))

#2樓

對元組進行排序很是簡單: spa

tuple(sorted(t))

#3樓

若是您想將數組從高到低排序,我只想添加到Stephen的答案中,除了上面的註釋中的另外一種方法就是將其添加到行中: code

reverse = True

結果將以下所示: 排序

data.sort(key=lambda tup: tup[1], reverse=True)

#4樓

sorted_by_second = sorted(data, key=lambda tup: tup[1])

要麼: get

data.sort(key=lambda tup: tup[1])  # sorts in place

#5樓

斯蒂芬的答案就是我會用的答案 。 爲了完整起見,這是帶有列表推導的DSU(裝飾-排序-取消裝飾)模式: it

decorated = [(tup[1], tup) for tup in data]
decorated.sort()
undecorated = [tup for second, tup in decorated]

或者,更簡潔地說: io

[b for a,b in sorted((tup[1], tup) for tup in data)]

Python Sorting HowTo中所述 ,自Python 2.4啓用關鍵功能以來,就沒有必要這樣作import

相關文章
相關標籤/搜索