【发布时间】:2012-05-16 22:46:40
【问题描述】:
我通过导入集合创建了一个 python 有序字典并将其存储在一个名为“filename.txt”的文件中。文件内容看起来像
OrderedDict([(7, 0), (6, 1), (5, 2), (4, 3)])
我需要从另一个程序中使用这个 OrderedDict。我这样做
myfile = open('filename.txt','r')
mydict = myfile.read()
我需要得到'mydict'的类型
<class 'collections.OrderedDict'>
但在这里,它的类型是“str”。
python中有什么方法可以将字符串类型转换为OrderedDict类型?使用 python 2.7
【问题讨论】:
-
我对你的问题没有很好的答案(即不使用
eval),但你真的不应该那样存储它。 -
不要这样存储您的数据。至少使用泡菜。我会否决任何建议使用
eval()的答案 -
人们害怕
eval的原因本质上是宗教而非理性。每种语言结构的存在都是有原因的,当一个eval(x)可以解决问题时,无需发明复杂的东西。是的,应该谨慎使用它(就像其他任何东西一样),但只要数据来自受信任的来源,使用eval就可以了。 -
@thg435 好吧,由于我们不知道数据是否来自受信任的来源,因此迈出了一大步。即使是这样,当有很多更好的方法时,为什么还要使用丑陋、缓慢、潜在危险、难以调试的方法。这里真正的问题是数据是如何存储的,并且以另一种格式存储它还有其他优势(例如,如果您需要 Python 以外的数据怎么办?)。
-
@Lattyware:评估辩论已经厌倦了说最好的。就像几十年前的“goto”一样,人们似乎对它产生了某种非理性的恐惧。我们中的大多数人认为它本身就是邪恶的,并相信只写一次就会给他们的代码甚至他们的生活带来永恒的诅咒。这似乎是某种宗教,因此与计算机编程的理性世界无关。
标签: python string parsing ordereddictionary