python, read keys from dict by size, to plot them
我有一个python dict,它包含未排序的键/值对,其中键是日期时间,值是int。
1 | {"1.12.2015":5,"4.12.2015":3,"2.12.2015":6, ...} |
现在,我想读取这些键,以及它们的值(按日期排序),以便使用pyplot绘制它们。
结果应该是:
1 2 3 4 5 6 | first pair: 1.12.2015 : 5 second: 2.12.2015 : 6 third: 4.12.2015 : 3 |
问题是,什么是最好的方法,以正确的顺序得到日期和价值观。最好是有一个在python 2.6中运行的选项。
你可以这样做,
1 2 3 4 | dic={"1.12.2015":5,"4.12.2015":3,"2.12.2015":6} k = sorted(dic, key=lambda d: map(int, d.split('.'))) for i in k: print i," :",dic[i] |
干杯!
使用lambda作为键来排序将每个键强制转换为日期时间对象:
1 2 3 4 5 6 | from datetime import datetime d = {"1.12.2015": 5,"4.12.2015": 3,"2.12.2015": 6} for k in sorted(d, key=lambda x: datetime.strptime(x,"%d.%m.%Y")): print(k, d[k]) |
输出:
1 2 3 | 1.12.2015 5 2.12.2015 6 4.12.2015 3 |
根据您的注释,如果您实际上已经有了日期时间对象,那么您只需对其进行排序:
1 2 | for k in sorted(d): print(k, d[k]) |
这或多或少是你想要的吗?
1 2 3 4 5 6 | data = {"1.12.2015":5,"4.12.2015":3,"2.12.2015":6} from datetime import datetime for k,v in sorted([(datetime.strptime(k, '%d.%m.%Y'), v) for k,v in data.iteritems()]): print datetime.strftime(k, '%d.%m.%Y'), v |