使用eval()
或ast.literal_eval()
(如其他人所建议的)从文件创建字典会产生奇怪的结果,我不知道为什么。从文件读取到字典和奇怪的eval()行为
我的文件,file.txt
包含此:
{0 : {1: 6, 1:8}, 1 : {1:11}, 2 : {3: 9}, 3 : {},4 : {5:3},5 : {2: 7, 3:4}}
我读入字典和打印内容进行这样
graph1 = {}
graph1 = ast.literal_eval(open("file.txt").read())
,我得到这个东西,其中{1:6}
丢失。
{0: {1: 8}, 1: {1: 11}, 2: {3: 9}, 3: {}, 4: {5: 3}, 5: {2: 7, 3: 4}}
我改变 'file.txt的' 的内容是:
{0: {2: 7, 3: 4}, 1: {1: 11}, 2: {3: 9}, 3: {}, 4: {5: 3}, 5: {2: 7, 3: 4}}
然后正确的内容显示!
然后我改变了file.txt
这个内容,在这里我重写1:6
为2:6
{0 : {2: 6, 1:8}, 1 : {1:11}, 2 : {3: 9}, 3 : {},4 : {5:3},5 : {2: 7, 3:4}}
而这正是输出,其中{2:6}
和{1:8}
开关的地方!
{0: {1: 8, 2: 6}, 1: {1: 11}, 2: {3: 9}, 3: {}, 4: {5: 3}, 5: {2: 7, 3: 4}}
我想要做的就是正确地将一个文件的内容读入我的字典中。出了什么问题?