python Sortieren Sie eine Liste von Tupeln nach dem 2. Element (Integer-Wert)





4 Answers

>>> from operator import itemgetter
>>> data = [('abc', 121),('abc', 231),('abc', 148), ('abc',221)]
>>> sorted(data,key=itemgetter(1))
[('abc', 121), ('abc', 148), ('abc', 221), ('abc', 231)]

IMO mit itemgetter ist in diesem Fall besser lesbar als die Lösung von @cheeken. Es ist auch schneller, da fast die gesamte Berechnung auf der c Seite (kein Wortspiel beabsichtigt) statt durch die Verwendung von lambda .

>python -m timeit -s "from operator import itemgetter; data = [('abc', 121),('abc', 231),('abc', 148), ('abc',221)]" "sorted(data,key=itemgetter(1))"
1000000 loops, best of 3: 1.22 usec per loop

>python -m timeit -s "data = [('abc', 121),('abc', 231),('abc', 148), ('abc',221)]" "sorted(data,key=lambda x: x[1])"
1000000 loops, best of 3: 1.4 usec per loop
python list tuples

Diese Frage hat hier bereits eine Antwort:

Ich habe eine Liste von Tupeln, die ungefähr so ​​aussieht:

[('abc', 121),('abc', 231),('abc', 148), ('abc',221)]

Ich möchte diese Liste in aufsteigender Reihenfolge nach dem ganzzahligen Wert innerhalb der Tupel sortieren. Ist es möglich?




Hinzufügen zu Cheekens Antwort, So sortieren Sie eine Liste von Tupeln nach dem 2. Punkt in absteigender Reihenfolge .

sorted([('abc', 121),('abc', 231),('abc', 148), ('abc',221)],key=lambda x: x[1], reverse=True)



Definieren Sie für eine Lambda-Vermeidungsmethode zuerst Ihre eigene Funktion:

def MyFn(a):
    return a[1]

dann:

sorted([('abc', 121),('abc', 231),('abc', 148), ('abc',221)], key=MyFn)



Verwenden Sie für eine direkte Sortierung

foo = [(list of tuples)]
foo.sort(key=lambda x:x[0]) #To sort by first element of the tuple





Related