Я хочу заменить список значений в словаре, используя значения двух других словарей.Например, у меня есть словарь с именем «a_dict», для которого каждый ключ имеет значение в виде списка
a_dict = {'A1':[10,20,30,40,50,60,70],'B1':[30,50,60,70,80]}
Теперь мне нужно заменить эти значения в a_dict, который соответствует «old_dict», используя new_dict, как показанониже,
old_dict = {0: 10, 1: 30}
new_dict = {0: 100, 1: 300}
Чтобы новый a_dict был,
a_dict_new = {'A1':[100,20,300,40,50,60,70],'B1':[300,50,60,70,80]}
Я пытался придумать приведенный ниже код, но он не дает мне правильного решения,
a_dict = {'A1':[10,20,30,40,50,60,70],'B1':[30,50,60,70,80]}
old_dict = {0: 10, 1: 30}
new_dict = {0: 100, 1: 300}
#a_dict_new = {'A1':[100,20,300,40,50,60,70],'B1':[300,50,60,70,80]}
a_dict_new = {}
for ky1, val1 in old_dict.items():
for ky2, ls in a_dict.items():
new_ls=[]
for v in ls:
if (v==val1):
new_ls.append(new_dict[ky1])
else:
new_ls.append(v)
a_dict_new[ky2]=new_ls
#
print(a_dict_new)
OUTPUT 1: {'A1': [10, 20, 300, 40, 50, 60, 70], 'B1': [300, 50, 60, 70, 80]}
В первой итерации в первом цикле for значение 10 изменяется на 100 в a_dict_new, но во второй итерации оно заменяет первую замену.Следовательно, выходные данные изменяются только на 30 - 300.
Кто-нибудь может предложить эффективный способ сделать эту операцию замены словаря python 3?