在python中从文本文件初始化词典
我有这样一个复杂的层次化python字典在python中从文本文件初始化词典,python,python-2.7,Python,Python 2.7,我有这样一个复杂的层次化python字典 dict = { "key1":{"key11":{"a"},"key12":{"b"}}, "key2":{"key21":{"c"},"key22":{"d"}}, "key3":{"key31":{"e"},"key32":{"f"}} } print dict["key2"]["key21"] 此代码段的
dict = {
"key1":{"key11":{"a"},"key12":{"b"}},
"key2":{"key21":{"c"},"key22":{"d"}},
"key3":{"key31":{"e"},"key32":{"f"}}
}
print dict["key2"]["key21"]
此代码段的输出为“c”,因此正确解释了分层字典。现在,我想从文件中读取它并将其分配给dictionary对象,而不是在代码中硬编码这个分层字典。也就是说,我将创建一个包含以下内容的dict.txt文件:
{
"key1":{"key11":{"a"},"key12":{"b"}},
"key2":{"key21":{"c"},"key22":{"d"}},
"key3":{"key31":{"e"},"key32":{"f"}}
}
当然,然后我将运行以读取文件流
stream = open("dict.txt", "r")
那么,python中是否有任何方便的方法可以让我轻松地将流中的内容分配给dictionary对象dict
(不是字符串)?您可以执行以下操作:
import ast
d = ast.literal_eval(stream.read())
但是,您的数据不仅仅是一个嵌套的dict,它还具有集作为值(至少如果有人将其解释为Python语法),这是ast.literal\u eval
无法处理的
据我所知,出于同样的原因,这不是一个有效的JSON。您可以:
import ast
d = ast.literal_eval(stream.read())
但是,您的数据不仅仅是一个嵌套的dict,它还具有集作为值(至少如果有人将其解释为Python语法),这是ast.literal\u eval
无法处理的
据我所知,出于同样的原因,这不是一个有效的JSON。我建议你简单地将整个
dict={…}
放入文本文件,将文件命名为something.py
,然后导入某个东西
并将其直接用作something.dict我建议你简单地将整个dict={…}
到文本文件中,将文件命名为something.py
,然后导入某物
,并将其直接用作something.dict如果您确定它的格式正确,这就是有效的JSON,那么您可以使用JSON.load(f)
来加载和解析它
尽管JSON比Python更挑剔(例如它被尾随的逗号堵住了,不接受单引号),所以您可能需要使用ast.literal\u eval
如果您确定它的格式是正确的,那就是有效的JSON,所以您可以使用JSON.load(f)
来加载和解析它
尽管JSON比Python更挑剔(例如它使用尾随逗号,不接受单引号),所以您可能需要使用ast.literal\u eval