繁体   English   中英

用新值替换嵌套python字典中的所有键和值

[英]Replacing all keys and values in nested python dictionary with new values

假设我在python中有一个嵌套dict ,例如:

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

我还有另一个简单明了的非嵌套字典,如下所示:

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

如何将第二个字典中与第二个字典中的键匹配的第一个字典中的所有键值替换为第二个字典的对应值,以便输出看起来像:

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

我采取了一种递归方法,如果数据的值是字典,则尝试替换键和值。 否则,它将数据视为单个值,然后尝试将其转换。

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]

字符串替换? 并将字符串转换为带有ast的字典... ??

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM