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