【发布时间】:2014-01-05 12:37:35
【问题描述】:
我有一个文本文件,其内容如下:
{'InventoryTake':'Key','OtherSceneNode':'Shed','AddOtherScene':'ShedOpen'}
以及从文本文件中检索数据的代码:
readin = eventVar.readline()
Results = eval(readin)
我遇到的问题是,由于它运行的代码的性质,我需要保持我的字典井然有序。然而python以随机顺序存储字典键。
我尝试使用有序字典来保留顺序,但这并没有什么不同。我认为这是因为在有序字典获取信息时,它已经按照从文件中读取的内容进行了排序。
我尝试过 eval、literal_eval 和 json 解析器来正确读取数据,但在运行程序时字典总是以错误的顺序出现。
这部分程序的目的是允许文本文件字典存储尽可能多的这些对(OtherSceneNode 和 AddOtherScene / TakeOtherScene)。所以我不能假设只有一组键值对。
我使用的是 python 2.7.5,如果它有助于命令它的输出是:
{'InventoryTake':'Key','AddOtherScene':'ShedOpen','OtherSceneNode':'Shed'}
我可以重做文本文件以获取特定的行,但这会使我的文本文件更加复杂,我觉得这只是避免问题而不是解决问题。
【问题讨论】:
-
为什么顺序对您来说很重要?如果顺序真的很重要,您可以将字典转换为列表并将列表写入文件。
-
python 中的字典没有顺序。使用 OrderedDict 保留插入顺序。
-
为什么要将它们放在字典中(除了能够使用 eval 轻松解析)?如果你想支持重复键,那不是一个合适的容器。
-
这是一个文字冒险游戏基地。这是来自处理事件的事件文本文件。字典是事件所做更改的列表,例如更新库存。之所以需要按顺序排列,是因为我想控制更改发生的顺序。
标签: python file dictionary eval