2016-02-03 202 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") ]