2016-04-12 6 views
1

Ich habe etwas Code, den ich portiere Cython, die eine Zeile wiePythonische Art des Komponierens von Itemgetter und Attrgetter?

my_list.sort(key=lambda x: x.attr[item]) hatte.

Gibt es eine nette pythonische Art, den Verschluss mit einer Kombination aus itemgetter und attrgetter zu vermeiden?

+0

Vermeidung der Schließung? Oder etwas anderes? – TigerhawkT3

+0

@ TigerhawkT3, OP benutzt Attribut get ('.attr '), Element get (' [item] ') beides, die die Verwendung von' operator.attrgetter', 'operator.itemgetter' verhindern. – falsetru

Antwort

2

Der Schlüssel ist, um das Paket functional zu verwenden: `Lambda x = x` Bedeutung

from functional import compose 
from operator import attrgetter, itemgetter 
my_list.sort(key=compose(itemgetter(item), attrgetter('attr')))