2016-02-03 174 views
2

我有一本字典,我想根据它的关键字进行排序。虽然我没有错误,但我的键值(日期)未排序。Python字典排序

如果有人能帮助我,我会很高兴。 谢谢。

d = defaultdict(list) 

    for row in rows: 
     date = row[0] 
     speed = float(row[1]) 

     if date not in d: 
      d[date] = [speed] 
     elif date in d: 
      speeds = d[date] 
      speeds.append(speed) 
      d[date] = speeds 

     date = d.keys() 
     date = sorted(d,key=lambda key:d[key]) 

     print date 

“打印日期” 的结果:

['2015/01/01 10:04', '2015/01/01 08:40', '2015/01/01 10:14', '2015/01/01 09:56', '2015/01/01 09:54', '2015/01/01 10:08', '2015/01/01 10:06', '2015/01/01 10:10', '2015/01/01 10:16', '2015/01/01 09:52'] 
+6

的[?我如何排序关键字的词典(可能的复制http://stackoverflow.com/questions/9001509/how-can-i -sort-a-by-key) – tinySandy

+0

不,我已经使用了所有这些推荐的算法,但是最后还是有一个没有排序的结果。 @minitoto – serenade

+2

普通的python字典在python中没有顺序。使用有序的字典。 https://docs.python.org/2/library/collections.html#collections.OrderedDict –

回答

0

我相信改变

date = d.keys() 

date = sorted(d.keys()) 

和删除

date = sorted(d,key=lambda key:d[key]) 

应该工作吗?我认为上面的行按d [key]中的内容排序,而不是按键。如果没有,datetime对象排序应该工作以及:

import datetime 
dates = sorted([datetime.datetime.strptime(i,"%Y/%m/%d %H:%M") for i in d.keys()]) 

# to access dictionary values in order: 
for date in dates: 
    entry = d[ date.strftime("%Y/%m/%d %H:%M") ]