Python中的排序更改列顺序

Python中的排序更改列顺序,python,sorting,Python,Sorting,我正在从csv n读取存储在dict中的数据。。。colName:Value。。。格式。。。 但是科尔斯的秩序被打乱了。。 我想要和csv一样的顺序 代码: 字典不按顺序排列,因此当您按顺序排列时: headers = sorted_data[0].keys() 标题的顺序基本上是随机的。另外,values()的返回值也是随机的,因此,即使您很幸运,当您使用以下命令写入行时,标题的顺序也是正确的: wr.writerow(i.values()) 不同行中的元素不必具有相同的顺序 必须分别从文

我正在从csv n读取存储在dict中的数据。。。colName:Value。。。格式。。。 但是科尔斯的秩序被打乱了。。 我想要和csv一样的顺序

代码:


字典不按顺序排列,因此当您按顺序排列时:

headers = sorted_data[0].keys()
标题的顺序基本上是随机的。另外,
values()
的返回值也是随机的,因此,即使您很幸运,当您使用以下命令写入行时,
标题的顺序也是正确的:

wr.writerow(i.values())
不同行中的元素不必具有相同的顺序

必须分别从文件中读取标题。另外,在您的情况下,最好使用
口述书写器
。例如:

with open('Block.csv') as infile, open('Block_sorted.csv', 'wb') as op:
    data = sorted(csv.DictReader(infile), key=lambda d: (d['Track_ID'], d['Kp_Begin']))

    # read the column names in the correct order.
    infile.seek(0)
    headers = infile.readline().split()

    wr = csv.DictWriter(op, headers, quoting=csv.QUOTE_NONE)
    wr.writeheader()
    wr.writerows(data)

    # don't need to close() files when using "with"

我要注意的是,如果不修改
dict
,则保证
zip(d.keys(),d.values())
等于
d.items()
@JonClements,它保持相同的
dict
,但每一行都是一个不同的
dict
,因此不能保证头的顺序
keys()
与行
values()
相同,甚至所有行的顺序都相同。我只是觉得“…头基本上是随机的。values()的返回值也是随机的”听起来好像字典是完全不可预测的。。。
with open('Block.csv') as infile, open('Block_sorted.csv', 'wb') as op:
    data = sorted(csv.DictReader(infile), key=lambda d: (d['Track_ID'], d['Kp_Begin']))

    # read the column names in the correct order.
    infile.seek(0)
    headers = infile.readline().split()

    wr = csv.DictWriter(op, headers, quoting=csv.QUOTE_NONE)
    wr.writeheader()
    wr.writerows(data)

    # don't need to close() files when using "with"