首页 > 解决方案 > 如何以正确的顺序打印年月

问题描述

我需要以以下格式在文件中输出数据:年-月,val。它应该按年排序,例如:

2016-1,5
2016-7,1
2016-9,3
2016-11,4
2016-12,2

但是,我得到:

2016-1,5
2016-11,4
2016-12,2
2016-7,1
2016-9,3

代码如下:

for k,v in sorted(dictD.items()):
           drow = [k,v]
           writer.writerow(drow)

如何获得所需的输出?

标签: pythonsortingdictionary

解决方案


在连字符处拆分日期并将其转换为数字元组而不是字符串。

for row in sorted(dictD.items(), key = lambda(x): map(int, x[0].split('-'))):
    writer.writerow(row)

x是由(key, value)返回的元组items(),键也是如此x[0],它是一个日期,如'2016-1'split将其拆分为元组('2016', '1'),并将map(int)其转换为整数序列(2016, 1)。使用它作为排序键将按数字而不是按字典顺序对它们进行排序。


推荐阅读