【问题标题】:Trying to figure this error: AttributeError: 'int' object has no attribute 'keys'试图找出这个错误:AttributeError: 'int' object has no attribute 'keys'
【发布时间】: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


【解决方案1】:

仔细阅读DictWriter上的示例

如果你想用这样的 writer 写行,它应该有 dict 格式

{"keys": <your_key>, "values": <your_value>}

这促使我们:

for k, v in d.items(): # without items you have only access to keys here
    writer.writerow("keys": k, "values": v)

或者你可以只使用writer

writer = csv.writer(file)
writer.writerow(fieldnames)

for data in d.items():
    writer.writerow(data)

【讨论】:

    猜你喜欢
    • 2021-11-08
    • 2018-02-05
    • 2022-12-01
    • 2023-02-18
    • 2022-12-03
    • 2016-11-25
    • 2023-01-23
    • 2017-02-22
    • 1970-01-01
    相关资源
    最近更新 更多