替换嵌套的Python字典中的所有键和值为新值

2024-05-16 11:20:27 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我在python中有一个嵌套的dict,类似于:

a[1][2] = 4
a[1][3][3] = 5

我还有另一个简单的非嵌套dict,如下所示:

^{pr2}$

如何将第一个dict中与第二个dict中的键匹配的所有keys值替换为第二个dict的相应值,以便输出如下所示:

a["Kansas City"]["Toledo"] = "Champaign"
a["Kansas City"]["Houston"]["Houston"] = "Seattle

Tags: citykeysdictseattlehoustonpr2champaignkansas
2条回答

字符串替换? 然后用ast把字符串转换成dict??在

a={}
a[1] = { 2 : 4 }
a[2] = { 3 : { 3 : 4 }}

replacement = {
    1 : "Kansas City",
    2 : "Toledo",
    3 : "Houston",
    4 : "Champaign",
    5 : "Seattle"}


aStr = str(a)
for key,value in replacement.iteritems() :
    aStr = aStr.replace( str(key), "'%s'"%value )

import ast
newA = ast.literal_eval(aStr)
print newA

我采用了一种递归的方法,如果数据的值是dictionary-尝试替换键和值。否则,它将数据视为单个值并尝试转换它。在

replace_dict是指出如何转换值的字典,data是当前值。在

def replace_key_val(data, replace_dict):
    if type(data)== dict:
        return {replace_dict[k] : replace_key_val(v, replace_dict) for k,v in data.iteritems()}
    return replace_dict[data]

相关问题 更多 >