在Python中排序更改列ord

2024-06-01 05:47:40 发布

您现在位置:Python中文网/ 问答频道 /正文

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

代码:

def sort_csv():

    data = list(csv.DictReader(open("Bl.csv")))
    op = open("Bl_S.csv", "wb")
    wr = csv.writer(op, quoting=csv.QUOTE_NONE)

    sorted_data = sorted(data, key = lambda d:(d['ID'], d['Begin']))
    headers = sorted_data[0].keys()
    wr.writerow(headers)
    for i in sorted_data:
         wr.writerow(i.values())

    op.close()

Tags: csv数据data顺序格式openwr秩序
1条回答
网友
1楼 · 发布于 2024-06-01 05:47:40

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

headers = sorted_data[0].keys()

headers的顺序基本上是随机的。另外,values()的返回值也是随机的,因此即使您很幸运,并且当您使用以下方法编写行时,headers的顺序是正确的:

^{pr2}$

不同行中的元素不必具有相同的顺序。在

您必须分别从文件中读取标题。另外,在你的例子中使用DictWriter可能更好。例如:

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"

相关问题 更多 >