迭代字典并在for循环中创建新字典保留顺序

时间:2018-03-01 09:32:43

标签: python loops sorting dictionary

我的代码是打开文件并读取字典中的字典。我想从密钥" time"中取出所有值。和密钥中的所有值"关闭"并将它们作为键:值对连接在一个单独的字典中。然而,我的代码实现了这一点,我需要对结果字典的排序方式与我从字典中提取的字典相同,因为它们是日期。出于某种原因,在第3次迭代之后,日期开始在我创建的新词典中被扰乱。有什么方法可以解决这个问题吗?

这是样本

import json
import datetime

dict={}

def parsehistory():

    file = json.load(open('histoday.json')) #open file
        for i in range(len(file["Data"])): #iterate through subdictionaries
            time  = file["Data"][i]["time"] #get all values from key "time"
            close = file["Data"][i]["close"] #get all values from key "close"
            convert = datetime.datetime.utcfromtimestamp(time).strftime('%m-%d-%Y') #convert time from unix to UTC
            dict[convert] = close #join values

            print(dict)

这是一个输出样本,显然没有按日期排序{' 02-05-2018':6937.08,' 02-03-2018': 9251.27,' 02-06-2018':7701.25,' 02-21-2018':10481.66,}

感谢任何帮助

1 个答案:

答案 0 :(得分:1)

默认情况下不订购

python dictionnaries。如果您想记住插入顺序,可以创建OrderedDict

只需将dict的初始化替换为:

dict = collections.OrderedDict()

然而,字典将按插入顺序排序,而不是按日期排序。