Am niște date fie într-o listă de liste, fie într-o listă de tupluri, astfel:
data = [[1,2,3], [4,5,6], [7,8,9]]
data = [(1,2,3), (4,5,6), (7,8,9)]
Și vreau să sortez după al doilea element din subset. Adică să sortez după 2,5,8 unde 2
este din (1,2,3)
, 5
este din (4,5,6)
. Care este modalitatea obișnuită de a face acest lucru? Ar trebui să stochez tupluri sau liste în lista mea?
Răspunsul lui Stephen's este cel pe care l-aș folosi. Pentru a fi complet, iată modelul DSU (decorate-sort-undecorate) cu înțelegeri de liste:
decorated = [(tup[1], tup) for tup in data]
decorated.sort()
undecorated = [tup for second, tup in decorated]
Sau, mai pe scurt:
[b for a,b in sorted((tup[1], tup) for tup in data)]
După cum se menționează în Python Sorting HowTo, acest lucru nu mai este necesar din Python 2.4, când au devenit disponibile funcțiile cheie.