Sie wollen, dass sie durch die Zahl des Monats sortieren, so dass Sie eine Abbildung von Ihrem Monat Abkürzungen auf die Zahl des Monats erstellen müssen:
dic = {'JUL':15, 'MAR': 54,'DEC':65,'OCT':90}
import calendar
month_numeric_mapping = {abb: index for abb in dic
for index, long in enumerate(calendar.month_name[1:])
if str.lower(abb) in str.lower(long)}
>>> month_numeric_mapping
{'DEC': 11, 'JUL': 6, 'MAR': 2, 'OCT': 9}
Dann definieren Sie eine Funktion, die mit sorted
verwendet werden kann, um diese Nummer zu erhalten:
def getMonthNumber(item):
return month_numeric_mapping[item[0]]
und schließlich müssen Sie OrderedDict
einen Auftrag-aware Wörterbuch haben die sortierte Ausgabe zu speichern:
>>> from collections import OrderedDict
>>> a = OrderedDict(sorted(dic.items(), key=getMonthNumber))
>>> a
OrderedDict([('MAR', 54), ('JUL', 15), ('OCT', 90), ('DEC', 65)])
Eine weitere Möglichkeit
calendar.month_abbr
zu verwenden ist:
month_numeric_mapping = {abbr.upper(): i for i, abbr in enumerate(calendar.month_abbr[1:])}
def getMonthNumber(item):
return month_numeric_mapping[item[0]]
a = OrderedDict(sorted(dic.items(), key=getMonthNumber))
>>> a
OrderedDict([('MAR', 54), ('JUL', 15), ('OCT', 90), ('DEC', 65)])
Sie könnten tun 'Rückkehr sortiert (d) 'in' ksort() ' – zondo