Python:从字典格式的文本/文件创建字典

标签 python file dictionary external

我想从我拥有的文本文件中创建一个字典,其内容为“字典”格式。以下是文件包含的示例:

{'fawn': [1], 'sermersheim': [3], 'sonji': [2], 'scheuring': [2]}

除了它包含 125,000 个条目之外,就是这样。我可以使用 read() 读取文本文件,但即使我使用

初始化变量,它也会创建文件文字文本的变量

dict = {}

最佳答案

您可以使用 eval内置。例如,如果每个字典条目都在不同的行上,这将起作用:

dicts_from_file = []
with open('myfile.txt','r') as inf:
    for line in inf:
        dicts_from_file.append(eval(line))    
# dicts_from_file now contains the dictionaries created from the text file

或者,如果文件只是一个大字典(甚至是多行),您可以这样做:

with open('myfile.txt','r') as inf:
    dict_from_file = eval(inf.read())

这可能是最简单的方法,但也不是最安全的。正如其他人在回答中提到的那样,eval 具有一些固有的安全风险。正如 JBernardo 所提到的,替代方法是使用 ast.literal_eval这比 eval 安全得多,因为它只会评估包含文字的字符串。导入 ast 模块后,您可以简单地将上述示例中对 eval 的所有调用替换为 ast.literal_eval

如果您使用的是 Python 2.4,您将不会拥有 ast 模块,也不会拥有 with陈述。代码看起来更像这样:

inf = open('myfile.txt','r')
dict_from_file = eval(inf.read())
inf.close()

别忘了调用 inf.close()with 语句的美妙之处在于它们会为您完成,即使 with 语句中的代码块引发异常。

关于Python:从字典格式的文本/文件创建字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9314824/

相关文章:

python - 删除列表中的多个词典

python - 在python中读取/写入字典到csv文件

python - 凸多边形之间的豪斯多夫距离

ruby-on-rails - 重新归档 gem : multiple file uploads

swift - 具有单个值的多个键的字典 - Swift

python - 将 CSV 转换为 txt 并使用 Python 每 10 个值开始新行

python - 从文件中的数据组成的列表中删除字符

python - 序列中相邻元素的比较

Python GTK+3教程--窗口显得过大,不像示例图片

android - Ubuntu 12.04 中没有为 Kivy 设置 Android SDK 环境