【发布时间】:2021-06-16 13:25:07
【问题描述】:
我正在做一项学校作业,要求我:
1) 将我之前创建的字典作为字符串写入文件。
2)然后再次将该字典导入python并反转它
3)将倒排字典写入新文件。
我之前问过一个关于这个程序的问题并得到了很好的答案,但我仍然很难解决一个错误。当我尝试运行程序时,我收到一个类型错误:不可散列类型:'list'。我假设它与反转功能有关。
当我使用 ChessPlayerProfile 字典在单独的脚本中运行该函数时,它似乎工作正常。但是当我尝试通过 Read_Invert_Write 函数输出中的返回字典在此脚本中使用它时,我得到了错误。
任何想法我做错了什么?任何帮助,将不胜感激。这是代码和输出:
import os
import json
ChessPlayerProfile = {
"Matt": [("Rating: ", 2200), ("FIDE ID: 0147632DF"), ("Member Status: ", True)],
"Will": [("Rating: ", 2200), ("FIDE ID: 3650298MK"), ("Member Status: ", False)],
"Jithu": [("Rating: ", 1900), ("FIDE ID: 5957200LH"), ("Member Status: ", True)],
"Lisa": [("Rating: ", 2300), ("FIDE ID: 7719328CX"), ("Member Status: ", False)],
"Nelson": [("Rating: ", 2500), ("FIDE ID: 6499012XX"), ("Member Status: ", True)],
"Miles": [("Rating: ", 1600), ("FIDE ID: 4392251TJ"), ("Member Status: ", True)],
}
def write2file():
with open("chessdict.txt", "w+") as f:
json.dump(ChessPlayerProfile, f)
def Read_Invert_Write():
with open("chessdict.txt", "r") as f:
Content = (json.load(f))
Content = dict(Content)
invert(Content)
with open("newoutput.txt", "w+") as f:
json.dump(Content, f)
def invert(d):
inverse = dict()
for key in d:
val = d[key]
for item in val:
if item not in inverse:
inverse[item] = [key]
else:
inverse[item].append(key)
print(inverse)
return inverse
def main():
write2file()
Read_Invert_Write()
main()
输出:
Traceback (most recent call last):
File "/home/vigz/PycharmProjects/pythonProject/copytest2.py", line 46, in
main()
File "/home/vigz/PycharmProjects/pythonProject/copytest2.py", line 45, in main
Read_Invert_Write()
File "/home/vigz/PycharmProjects/pythonProject/copytest2.py", line 24, in Read_Invert_Write
invert(Content)
File "/home/vigz/PycharmProjects/pythonProject/copytest2.py", line 35, in invert
if item not in inverse:
TypeError: unhashable type: 'list'
【问题讨论】:
标签: python dictionary hash