将字典写入表中的 csv 文件。它不断显示"String indices must be integers"



我想在csv文件中写一个带有标题的表['Username','INFO','ERROR']
我已经看了";字符串索引必须是整数";在线
按照指示,Python仍然保持输出相同类型的错误
这真的让很沮丧

有人知道怎么解决吗?

import csv
dict_data = {'ac': {'INFO': 2, 'ERROR': 2}, 'ahmed.miller': {'INFO': 2, 'ERROR': 4}, 'blossom': {'INFO': 2, 'ERROR': 6}, 'bpacheco': {'INFO': 0, 'ERROR': 2}, 'breee': {'INFO': 1, 'ERROR': 5}, 'britanni': {'INFO': 1, 'ERROR': 1}, 'enim.non': {'INFO': 2, 'ERROR': 3}, 'flavia': {'INFO': 0, 'ERROR': 5}, 'jackowens': {'INFO': 2, 'ERROR': 4}, 'kirknixon': {'INFO': 2, 'ERROR': 1}, 'mai.hendrix': {'INFO': 0, 'ERROR': 3}, 'mcintosh': {'INFO': 4, 'ERROR': 3}, 'mdouglas': {'INFO': 2, 'ERROR': 3}, 'montanap': {'INFO': 0, 'ERROR': 4}, 'noel': {'INFO': 6, 'ERROR': 3}, 'nonummy': {'INFO': 2, 'ERROR': 3}, 'oren': {'INFO': 2, 'ERROR': 7}, 'rr.robinson': {'INFO': 2, 'ERROR': 1}, 'sri': {'INFO': 2, 'ERROR': 2}, 'xlg': {'INFO': 0, 'ERROR': 4}}
with open("testinggg.csv", 'w') as output:
fields = ['Username', 'INFO', 'ERROR']
writer = csv.DictWriter(output, fieldnames=fields)
writer.writeheader()
for m in dict_data:
print(m)
writer.writerow({'Username': str(m[0]), 'INFO': str(m[1]['error']), 'ERROR': str(m[1]['info'])})

无论我多么努力,Python都会不断显示这一点:

Traceback (most recent call last):
File "<stdin>", line 3, in <module>
TypeError: string indices must be integers

for m in dict_data只迭代dict的键,这些键是字符串。您应该在print(m)语句中看到这一点:

ac
ahmed.miller
blossom
bpacheco
breee
...

语句m[0]将只给您第一个字母,如"ac"中的"a"。语句m[1]['error']是您的错误来源;你把"ac"中的第二个字母"c"当作一句格言。

要获取用户名、密钥和INFO/ERROR值,请使用items((迭代器:

for k, v in dict_data.items():
writer.writerow({'Username': k, 'INFO': v['INFO'], 'ERROR': v['ERROR']})

您在尝试访问子dicts:时也有错误

  • INFO/ERROR键大写
  • 您在示例中交换了信息/错误

上面的代码修复了这两个问题。

相关内容

最新更新