前提
pythonで辞書型のデータをCSVに出力しようとしています。実行するとAttributeError: 'str' object has no attribute 'keys'が出てしまい、うまく動作しません。
当該エラーを調べ、型のチェックを行い、扱っているデータがdictであることを確認しました。
何が問題なのでしょうか。ご教示いただければ幸いです。
実現したいこと
辞書データをcsvに書き出したい。
発生している問題・エラーメッセージ
Traceback (most recent call last): File "c:\Users\user\Documents\GitHub\scripts\csvDecWrite.py", line 16, in <module> writer.writerows(urllist) File "C:\Users\user\AppData\Local\Programs\Python\Python311\Lib\csv.py", line 157, in writerows return self.writer.writerows(map(self._dict_to_list, rowdicts)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\user\AppData\Local\Programs\Python\Python311\Lib\csv.py", line 147, in _dict_to_list wrong_fields = rowdict.keys() - self.fieldnames ^^^^^^^^^^^^ AttributeError: 'str' object has no attribute 'keys'
該当のソースコード
python
1import csv 2 3urllist = {} 4 5urllist.setdefault("a","url1") 6urllist.setdefault("a","url2") # 追加されないことを確認 7urllist.setdefault("b","url1") 8urllist.setdefault("c","url1") 9 10print(type(urllist)) # ここの型はdict 11print(type(urllist["a"])) # ここの型はstr 12 13with open("url.csv","w",newline='') as f: 14 writer = csv.DictWriter(f, fieldnames = ["name","url"]) 15 writer.writeheader() 16 writer.writerows(urllist) 17 18#### 19# 実行すると 20# AttributeError: 'str' object has no attribute 'keys' 21# が帰ってきてしまいます。 22####
試したこと
当該エラーを検索し、データ型が文字列ではなく辞書であることを確認しました。
何か非常に基本的な見落としがあるのだと思います。ほうぼう検索し一晩考えたのですが解決できませんでした。ご助言頂けるとありがたいです。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/12/14 03:37