A question was asked here on SO, kilka minut temu, na temat sortowania kluczy słownika na podstawie ich wartości.Sortowanie słownika przy użyciu operatora.itemgetter
Właśnie przeczytałem o sposobie sortowania kilka dni wstecz i postanowiłem spróbować, ale wydaje się, że nie działa.
Nie mam żadnych problemów z odpowiedziami na pytania, chciałem tylko wypróbować to z operator.itemgetter
.
Więc DICT było:
>>> mydict = { 'a1': ['g',6],
'a2': ['e',2],
'a3': ['h',3],
'a4': ['s',2],
'a5': ['j',9],
'a6': ['y',7] }
Próbowałem to:
>>> l = sorted(mydict.itervalues(), key=operator.itemgetter(1))
>>> l
[['e', 2], ['s', 2], ['h', 3], ['g', 6], ['y', 7], ['j', 9]]
A działa to tak jak chcemy. Jednak, ponieważ nie mam kompletny słowniku (mydict.itervalues()
), próbowałem to:
>>> complete = sorted(mydict.iteritems(), key=operator.itemgetter(2))
To nie działa (tak jak się spodziewałem, że).
W jaki sposób posortować dyktę za pomocą operator.itemgetter
i zadzwonić pod numer itemgetter
w zagnieżdżonej pary klucz-wartość.
Czy możesz wyjaśnić to: 'operator.itemgetter (1) (v))'? – user225312
@A A: 'operator.itemgetter (1) (v)' jest równoważne 'v [1]'. Możesz zastąpić każde wystąpienie 'a [b]' z 'operator.itemgetter (b) (a)', ale nie jest tak, jak * I * zrozumiałem twoje pytanie :) –
Tworzenie itemgettera jest stosunkowo kosztowne. To tworzy jeden dla każdego klucza w dyktafonie –