【发布时间】:2016-05-28 19:01:05
【问题描述】:
我对以下代码有疑问。我正在尝试从 CSV 文件中读取数据以创建嵌套字典。当我第一次运行它时,它完全符合我的意图,但是当我运行它两次时,它会改变输出的顺序。有谁知道为什么会这样?我正在使用 Python 3.4。
import csv
delimiter = ';'
result = {}
with open("F:\\Python Projects\\Database.csv", 'r') as data_file:
data = csv.reader(data_file, delimiter=delimiter)
headers = next(data)[1:]
for row in data:
temp_dict = {}
name = row[0]
values = []
for x in row[1:]:
values.append(x)
for i in range(len(values)):
temp_dict[headers[i]] = values[i]
result[name] = temp_dict
print(result)
我的输入如下所示:
结果是这样的:
当我运行代码两次时,第 1 列显示了不同的顺序。
【问题讨论】:
-
标准 Python 字典是无序的。即使您对 (key,value) 对进行了排序,您也无法以保留顺序的方式将它们存储在 dict 中。见stackoverflow.com/questions/9001509/…
-
您可以按照@karasinski 链接的答案中的建议使用
OrderedDict。 -
我不是要订购行,而是要订购列。在我看来,它应该有像我的 csv 文件一样的顺序,因为代码从头到尾都在运行,还是我错了?
标签: python csv dictionary