這裏有很多關於輸出字典內容的帖子。實際上,我發現了一個非最佳解決方案(我將在下面展示),但我最感興趣的是爲什麼我的非最佳解決方案起作用。輸出Python字典的內容
這裏是我的代碼:
只是import csv
keys = ("Ev", "E1", "E2", "E3", "I", "B", "O", "T")
p = input("P")
e = input("e")
e2 = input("e2")
e3 = input("e3")
it = input("it")
b = input("b")
o = input("o")
t = input("t")
dictionary = {"Ev": p, "E1": e, "E2": e2, "E3": e3, "I": it, "B":b, "O": o, "T": t}
dictionary2 = {"Ev": p, "E1": e, "E2": e2, "E3": e3, "I": it, "B":b, "O": o, "T": t}
with open("infile.csv", "a") as f:
w = csv.DictWriter(f, keys)
w.writeheader()
for answer in (dictionary, dictionary2):
w.writerow(answer)
我的目標是一個字典。但是,當我嘗試輸出字典的內容時,我一直得到關於「B」的ValueError。我嘗試了一些解決方案,最好的一個似乎是添加第二個字典,它只打印兩次相同的確切輸出,當我打開它時,我可以從輸出文件中刪除精確的重複項。我知道這是非常糟糕的做法,但這是我得到的最快捷的解決方案,在這一段時間內陷入困境是一件壞事。
爲什麼添加第二個字典在這種情況下工作?我不明白爲什麼這個代碼拋出一個ValueError,如果只有一個字典被使用,但是當兩個工作正常時(除了重複的行,我必須刪除)。
編輯
非工作代碼是行:
for answer in (dictionary):
,正如馬亭好心指出的那樣,只是循環在一個字典的鍵。
EDIT2
而且,追蹤誤差爲:
Traceback (most recent call last):
File "file.py", line 41, in <module>
w.writerow(answer)
File "/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/csv.py", line 153, in writerow
return self.writer.writerow(self._dict_to_list(rowdict))
File "/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/csv.py", line 149, in _dict_to_list
+ ", ".join(wrong_fields))
ValueError: dict contains fields not in fieldnames: B
python version? –
請給出完整的追溯和*非工作*代碼,以便我們能夠爲您提供幫助;你可能設法意外地創建了工作代碼,而不是因爲你偶然發現了一些奇怪的技巧。 :-) –
供將來參考:'NameError'與'ValueError'有很大的不同...... –