关于字典:python,按大小从dict中读取键,以绘制它们

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