Jeg har noen data enten i en liste med lister eller en liste med tupler, som dette:
data = [[1,2,3], [4,5,6], [7,8,9]]
data = [(1,2,3), (4,5,6), (7,8,9)]
Og jeg vil sortere etter det andre elementet i delsettet. Betydning, sortering etter 2,5,8 der 2
er fra (1,2,3)
, 5
er fra (4,5,6)
. Hva er den vanlige måten å gjøre dette på? Skal jeg lagre tupler eller lister i listen min?
Stephen&# 39s svar er den jeg vil bruke. For fullstendighetens skyld, her er DSU-mønsteret (dekorere-sortere-dekorere) med listeforståelser:
decorated = [(tup[1], tup) for tup in data]
decorated.sort()
undecorated = [tup for second, tup in decorated]
Eller, mer kortfattet:
[b for a,b in sorted((tup[1], tup) for tup in data)]
Som nevnt i Python Sorting HowTo, har dette vært unødvendig siden Python 2.4, da nøkkelfunksjoner ble tilgjengelige.