[英]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.