【发布时间】:2022-01-19 03:25:45
【问题描述】:
我正在尝试将 python 的 OrderedDict 转换为普通字典,然后将其解析为 CSV 文件。我遇到了“int”对象没有属性“keys”的挑战
data_keys = list(range(-5, -11, -1))
result = {}
for element in data_keys:
result[element] = random()
sorted_values = collections.OrderedDict(sorted(result.items(), key=lambda t: t[1]))
pprint(sorted_values)
d = dict(sorted_values)
pprint(d)
with open('ordered-values.csv', 'w', newline='') as file:
fieldnames = ['keys', 'values']
writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writeheader()
for data in d:
writer.writerow(data)
完整的错误回溯
Traceback (most recent call last):
File "/home/sharhan/Documents/CV/SOLARIS-OFFGRID/11.py", line 29, in <module>
writer.writerow(data)
File "/usr/lib/python3.9/csv.py", line 154, in writerow
return self.writer.writerow(self._dict_to_list(rowdict))
File "/usr/lib/python3.9/csv.py", line 147, in _dict_to_list
wrong_fields = rowdict.keys() - self.fieldnames
AttributeError: 'int' object has no attribute 'keys'
【问题讨论】:
-
您使用的是
DictWriter,因此您应该将整本字典传递给它,而不仅仅是一个键。 -
用您自己的话说,当您编写
for data in d:时,您希望data每次循环时的样子?当您拨打writer.writerow时,您希望它做什么?你认为你应该向它传递什么样的数据?现在,检查文档并进行验证。 -
我正在遍历字典并逐行插入。你能用一些代码弄清楚吗?我首先做了
writer.writerows(d)来解析整个字典,但仍然得到同样的错误 -
@JohnGordon 你能用一些代码解释清楚吗?我用
writer.writerows(d)做了你建议的事情,我解析了整个字典,但仍然收到相同的错误消息
标签: python python-3.x csv