首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >排序字段名称

排序字段名称
EN

Stack Overflow用户
提问于 2013-01-14 11:45:48
回答 1查看 9.7K关注 0票数 3

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

代码语言:javascript
复制
Attributes,Description,Dial-Up
4,2,0.2
3,1,0.4

使用dictreader:

代码语言:javascript
复制
dictreader = csv.DictReader(open(filename, "rb"), delimiter=',')
dictdata = {}
count=0
for row in dictreader:
    dictdata[count]=row
    count=count+1

并在表中显示或使用写入器,我将得到:

代码语言:javascript
复制
Dial-Up,Attributes,Description
0.2,4,2
0.4,3,1

那么我怎样才能对字段名进行排序呢?

EN

回答 1

Stack Overflow用户

发布于 2013-01-14 12:28:25

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

代码语言:javascript
复制
fields = dictreader.fieldnames
print(fields)
# ['Attributes', 'Description', 'Dial-Up']

因此,要按以下顺序打印行值:

代码语言:javascript
复制
print(','.join(fields))
for row in dictreader:
    print(','.join(row[field] for field in fields))

收益率

代码语言:javascript
复制
Attributes,Description,Dial-Up
4,2,0.2
3,1,0.4

或者,使用@JonClements的想法:

代码语言:javascript
复制
import operator
fields = dictreader.fieldnames
getfields = operator.itemgetter(*fields)
for row in dictreader:
    print(','.join(getfields(row)))

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

代码语言:javascript
复制
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
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14317849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档