假设我在python中有一个嵌套的dict
,如:
a[1][2] = 4
a[1][3][3] = 5
我有另一个简单的非嵌套字典,如下:
{
1 : "Kansas City",
2 : "Toledo",
3 : "Houston",
4 : "Champaign",
5 : "Seattle"
}
如何将第一个dict中与第二个dict中的键匹配的所有键和值替换为第二个dict的相应值,以便输出如下所示:
a["Kansas City"]["Toledo"] = "Champaign"
a["Kansas City"]["Houston"]["Houston"] = "Seattle
答案 0 :(得分:1)
我采用递归方法,如果数据的值是字典 - 尝试替换键和值。否则,它会将数据视为单个值,并尝试将其转换。
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]
答案 1 :(得分:-1)
字符串替换? 并将字符串转换为带有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