Python Dictreader排序字段名

2024-10-03 00:18:30 发布

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

我有一个包含内容的.csv文件(示例)

Attributes,Description,Dial-Up
4,2,0.2
3,1,0.4

使用听写器:

dictreader = csv.DictReader(open(filename, "rb"), delimiter=',')
dictdata = {}
count=0
for row in dictreader:
    dictdata[count]=row
    count=count+1

并显示在表格中或使用writer,我将得到:

Dial-Up,Attributes,Description
0.2,4,2
0.4,3,1

那么,如何对字段名进行排序?


Tags: 文件csv示例内容countdescriptionopenfilename
1条回答
网友
1楼 · 发布于 2024-10-03 00:18:30

DictReader将字段(dict键)存储在名为fieldnames的属性中:

fields = dictreader.fieldnames
print(fields)
# ['Attributes', 'Description', 'Dial-Up']

所以要按此顺序打印行值:

print(','.join(fields))
for row in dictreader:
    print(','.join(row[field] for field in fields))

收益率

Attributes,Description,Dial-Up
4,2,0.2
3,1,0.4

或者,使用@JonClements的想法:

import operator
fields = dictreader.fieldnames
getfields = operator.itemgetter(*fields)
for row in dictreader:
    print(','.join(getfields(row)))

使用operator.itemgetter的动机是它比使用列表理解更快:

In [70]: %timeit getfields(row)
10000000 loops, best of 3: 174 ns per loop

In [71]: %timeit [row[field] for field in fields]
1000000 loops, best of 3: 272 ns per loop

相关问题 更多 >