例如,我的 csv 包含如下列:
ID, ID2, Date, Job No, Code
我需要以相同的顺序写回列。 dict
立即打乱了顺序,所以我相信这更多是读者的问题。
原文由 Alex 发布,翻译遵循 CC BY-SA 4.0 许可协议
例如,我的 csv 包含如下列:
ID, ID2, Date, Job No, Code
我需要以相同的顺序写回列。 dict
立即打乱了顺序,所以我相信这更多是读者的问题。
原文由 Alex 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.5k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答899 阅读✓ 已解决
1 回答1.8k 阅读✓ 已解决
Python 的
dict
s 不保持 3.6 之前的顺序(但是,无论如何,在该版本中,csv.DictReader
类被修改为返回OrderedDict
)。但是,您正在使用的
csv.DictReader
的实例(在您阅读第一行之后!-) 确实 有一个.fieldnames
字符串 列表,这是按顺序排列的。所以,
将向您展示订单确实得到了维护(在
.fieldnames
当然, 永远不会 在dict
中 - 这在 Python 中本质上是不可能的!-)。因此,假设您想以相同的列顺序读取
a.csv
并写入b.csv
。使用普通的 reader 和 writer 太容易了,所以您想改用 Dict 变体;-)。好吧,一种方法是……:假设您在
a.csv
中有标头(否则您不能在其上使用 DictReader)并且只需要b.csv
中的相同标头。