res_dict = {}
def get_value(co , passed_dict ):
for k, v in passed_dict.items():
if isinstance(v, dict):
get_value(co, v)
else:
res_dict[k] = v
print("from else",res_dict)
return res_dict
def easy():
inner_dict = {
"test1" : {"test1_in" : "abc"},
"test2" : {"test1_in" : "xyz"}
}
dict1 = {}
count = 0
val_from_function= {}
key_list = ['key1','key2']
for key in key_list:
count = count + 1
val_from_function = get_value(count ,inner_dict)
print("before assign" ,dict1 )
dict1[key] = val_from_function
print("after assign" , dict1)
# dict1['key1'] = {'test1' : "abc"}
# dict1['key2'] = {'test1' : "xyz"}
print(dict1)
easy()
- получение вывода: {'key1': {'test1_in': 'xyz'}, 'key2': {'test1_in': 'xyz'}}
ожидается o / p: {'key1': {'test1_in': 'ab c'}, 'key2': {'test1_in': 'xyz'}}
I понимать, что значение dict1 обновляется последним значением как res_dict, объявленным как глобальная переменная.
- Я могу решить эту проблему, добавив значение внутреннего ключа к внешнему ключу и сохранив его в словаре.
- Я могу решить его, используя упорядоченный словарь.
- взяв ключи из списка в качестве значения внешнего ключа (key1, key2 .., key3000) неизвестно.
Поиск предложений о том, как улучшить этот код с ожидаемым значением o / p. Имеют значения пары ключей 3k, такие же, как в примере шаблона с большим количеством вложенных k, v и сохранением o / p в качестве кэша, поэтому производительность здесь не является большой проблемой.