Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果嵌套字典键名称与另一个字典键名称匹配,请重命名该名称_Python - Fatal编程技术网

Python 如果嵌套字典键名称与另一个字典键名称匹配,请重命名该名称

Python 如果嵌套字典键名称与另一个字典键名称匹配,请重命名该名称,python,Python,假设我有一本嵌套字典 dict1 = {'London': {'car_toyota': 288, 'car_audi': 64, 'car_bmw': 426}, 'Paris': {'car_toyota': 48, 'car_audi': 96}, 'New York': {'car_bmw': 48} dict2 = {'car_toyota': 'Toyota', 'car_audi': 'Audi', 'car_bmw': 'BMW'} 还有普通字典 dict1 = {'Lond

假设我有一本嵌套字典

dict1 = {'London': {'car_toyota': 288, 'car_audi': 64, 'car_bmw': 426}, 'Paris': {'car_toyota': 48, 'car_audi': 96}, 'New York': {'car_bmw': 48}
dict2 = {'car_toyota': 'Toyota', 'car_audi': 'Audi', 'car_bmw': 'BMW'}
还有普通字典

dict1 = {'London': {'car_toyota': 288, 'car_audi': 64, 'car_bmw': 426}, 'Paris': {'car_toyota': 48, 'car_audi': 96}, 'New York': {'car_bmw': 48}
dict2 = {'car_toyota': 'Toyota', 'car_audi': 'Audi', 'car_bmw': 'BMW'}
我想用dict2中对应的键的值重命名dict1中的键,这样看起来

{'London': {'Toyota': 288, 'Audi': 64, 'BMW': 426}, 'Paris': {'Toyota': 48, 'Audi': 96}, 'New York': {'BMW': 48}
我陷入了混乱的嵌套循环中,似乎无法满足我的需求

for i, j in dict1.iteritems():
    for k, v in j.items():
        for a, b in dict2.items():
            if k == a:
                j[k] == j.pop(a)

最好的方法是什么?

您可以使用嵌套字典理解:

dict1 = {'London': {'car_toyota': 288, 'car_audi': 64, 'car_bmw': 426}, 'Paris': {'car_toyota': 48, 'car_audi': 96}, 'New York': {'car_bmw': 48}}
dict2 = {'car_toyota': 'Toyota', 'car_audi': 'Audi', 'car_bmw': 'BMW'}
final_d = {a:{dict2[c]:d for c, d in b.items()} for a, b in dict1.items()}
输出:

{'Paris': {'Toyota': 48, 'Audi': 96}, 'New York': {'BMW': 48}, 'London': {'Toyota': 288, 'BMW': 426, 'Audi': 64}}

在这种理解中稍微好一点的名字会让它更容易理解。