我有一個字典。python根據時間排序的字典
d = {'0:0:7': '19734', '0:0:0': '4278', '0:0:21': '19959', '0:0:14': '9445', '0:0:28': '14205', '0:0:35': '3254'}
我想按字典中的鍵()排序字典。
如何排序我的字典?
我有一個字典。python根據時間排序的字典
d = {'0:0:7': '19734', '0:0:0': '4278', '0:0:21': '19959', '0:0:14': '9445', '0:0:28': '14205', '0:0:35': '3254'}
我想按字典中的鍵()排序字典。
如何排序我的字典?
Python中的字典沒有訂單保證。有collections.OrderedDict
,它保留插入順序,但如果你想通過一個標準的字典的鍵,以便工作,你可以這樣做:
for k in sorted(d):
在你的情況下,問題是,你的時間字符串不會排序正確。你需要包含使他們這樣做所需的附加零,例如, "00:00:07"
,或將它們解釋爲實際的time
對象,這些對象將正確排序。這個功能可能是有用的:
def padded(s, c=":"):
return c.join("{0:02d}".format(int(i)) for i in s.split(c))
,如果你真的想保留你的輸出電流格式,您可以以此爲key
爲sorted
:
字典不排序,如果你想它打印出來或者通過它在有序進行迭代,你應該首先將其轉換爲一個列表:
如:
sorted_dict = sorted(d.items(), key=parseTime)
#or
for t in sorted(d, key=parseTime):
pass
def parseTime(s):
return tuple(int(x) for x in s.split(':'))
請注意,這意味着您不能對sorted_dict使用d ['0:0:7']語法。
將'key'參數傳遞給排序告訴python如何比較列表中的項目,標準字符串比較將無法按時間排序。
非常感謝。 這個工作正常! –
http://stackoverflow.com/help/someone-answers – jonrsharpe