我的Ordereddict是
month = OrderedDict([('Jan', 23), ('Dec', 5), ('Sep', 2), ('Oct', 233)])
我希望按月分类。
OrderedDict([('Jan', 23), ('Sep', 2), ('Oct', 233), ('Dec', 5)])
week = OrderedDict([('1-4', 5), ('34-38', 53), ('30-32', 3), ('13-20', 33)])
这里1-4岁,34-38岁就是一周。
我希望按周计算
OrderedDict([('1-4', 5), ('13-20', 33), ('30-32', 3), ('34-38', 53)])
date = OrderedDict([('2/23/2013', 5), ('1/13/2013', 33), ('1/22/2013', 3), ('1/3/2013', 53)])
答案 0 :(得分:1)
您可以将calendar.month_abbr
与sorted
功能一起使用:
>>> import calendar
>>> l=list(list(calendar.month_abbr))
>>> OrderedDict(sorted(month.items(),key=lambda x:l.index(x[0])))
OrderedDict([('Jan', 23), ('Sep', 2), ('Oct', 233), ('Dec', 5)])
在这里,您需要在sorted
上应用month.itms()
函数,并根据calendar.month_abbr
中的月份索引对其元素进行排序:
>>> list(calendar.month_abbr)
['', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
几周以来,您只需根据周范围的第一部分进行排序:
>>> OrderedDict(sorted(week.items(),key=lambda x:x[0].split('-')[0]))
OrderedDict([('1-4', 5), ('13-20', 33), ('30-32', 3), ('34-38', 53)])
对于'2/23/2013'
这样的日期格式,请使用datetime.datetime.strptime
作为sorted
密钥:
>>> import datetime
>>> date = OrderedDict([('2/23/2013', 5), ('1/13/2013', 33), ('1/22/2013', 3), ('1/3/2013', 53)])
>>> OrderedDict(sorted(date.items(),key=lambda x:datetime.datetime.strptime(x[0],'%d/%M/%Y')))
OrderedDict([('1/3/2013', 53), ('1/13/2013', 33), ('1/22/2013', 3), ('2/23/2013', 5)])