文件中的字典代码到python中的字典



我有一个.txt文件,保存方式如下:{(‘A’,0(:-1,(‘A‘,1(:-1、(‘A,2(:0、(‘B’,0如果你像这样编码dict = {('A', 0): -1, ('A', 1): -1, ('A', 2): 0, ('B', 0): -1, ('B', 1): 0, ('B', 2): 0, ('C', 0): 0, ('C', 1): 0, ('C', 2): 0},它应该变成dict但是,如果将文件中的文本导入到字符串中,使该字符串成为原始文本(就像txtfromfile = "{('A', 0): -1, ('A', 1): -1, ('A', 2): 0, ('B', 0): -1, ('B', 1): 0, ('B', 2): 0, ('C', 0): 0, ('C', 1): 0, ('C', 2): 0}"和我这样做dict = txtfromfile使dict成为字符串。有没有办法把它变成dict而不是string?

您可以使用ast内置模块中的literal_eval函数:

import ast
with open("myfile.txt", "r") as fp:
mydict = ast.literal_eval(fp.read())

json.loads(text)将发挥作用。https://docs.python.org/3/library/json.html

编辑:从注释中了解到eval不应用于此操作。此处解释。正确的解决方案是建议CCD_ 8的答案。

可以不应使用以下内容评估文本:

txtfromfile = "{('A', 0): -1, ('A', 1): -1, ('A', 2): 0, ('B', 0): -1, ('B', 1): 0, ('B', 2): 0, ('C', 0): 0, ('C', 1): 0, ('C', 2): 0}"
my_dict = eval(txtfromfile)
print(my_dict)

输出:

{('A', 0): -1, ('A', 1): -1, ('A', 2): 0, ('B', 0): -1, ('B', 1): 0, ('B', 2): 0, ('C', 0): 0, ('C', 1): 0, ('C', 2): 0}

最新更新