首页 > 解决方案 > 如何防止 ast.literal_eval 覆盖相同的键值?

问题描述

我目前正在编写一个改装工具,作为其中的一部分,我需要能够读取基于文本的游戏数据文件。我目前正在将它们读入我的程序并将它们转换为字符串格式的字典,例如

{"add_namespace":"ace_promoted",
"add_namespace":"ace_died",
"add_namespace":"ace_killed_by_ace",
"add_namespace":"ace_killed_other_ace",
"add_namespace":"aces_killed_each_other",
"country_event":{"id":"ace_promoted.1",
"title":"ace_promoted.1.t",
"desc":{"text":"ace_promoted.1.d",
    "trigger":{"NOT":{"tag":"GER"},
        "NOT":{"tag":"ITA"},
        "NOT":{"tag":"FRA"},
        "NOT":{"tag":"JAP"},
        "NOT":{"tag":"USA"},
        "NOT":{"tag":"ENG"},
        "NOT":{"tag":"SOV"}}}

ETC...

当我使用

ast.literal_eval(dict_string)

它转换字典中的字符串,但重复的键意味着许多值丢失,因为只保留最后一个。有没有办法将这些值自动合并到一个列表中,这样就不会丢失?

标签: python

解决方案


推荐阅读