Создала пустой словарь в который добавляю ключ-значения из цикла for, необходимо сохранить все из цикла.
Подскажите пожалуйста, может поставить условие на существование ключа в словаре и придумать автоматическое генерирование названия нового ключа, если ключ уже существует в словаре.
Например у меня подается на входе:
'name': ‘NSU’
'Location': ‘Novosibirsk’
'name': ‘Alexander Ivanov’
'Aim': ‘Student’
'name': ‘MMF’
Хочу на выходе получить словарь:
{'name': ‘NSU’,'Location': ‘Novosibirsk’, ‘name_1’: ‘Alexander Ivanov’, ‘Aim’: ‘Student’, ‘name_2’: ‘MMF’}
У меня на входе список элементы которого словари. Я каждый элемент списка (словарь с вложенными словарями) преобразую как раз до простого словаря (нахожу конечные ключ-значения с помощью рекурсии), в процессе раскрытия словарей у меня и появляются одинаковые ключи. На выходе хотела бы получить список состоящий из простых словарей с сохраненнием всех ключей и преобразовать список словарей до DF. Проблема словаря - в том,что если у меня 3 раза например появляется ключ name - сохраняется лишь последнее значение, но я бы хотела получить три разные ключа.
Вот мой код, который преобразует вложенный словарь до простого, но не учитывает трансформацию ключа, если данный ключ уже есть:
def dict_traversal(d, a=defaultdict(list)):
“”“
dict_traversal is recurse method over nested dictionaries and return key-value as a dictionary
:param d: nested dictionary
:param a: new dictionary for saving the results
:return: dictionary without attachments
”“”
for key, value in d.items():
if isinstance(value, dict):
dict_traversal(value)
elif isinstance(value, list):
for el in value:
if isinstance(el,dict):
dict_traversal(el)
else:
if key not in ('url', ‘type’,'done','totalSize'):
a.append(value)
return a.copy()
Буду очень благодарна любой помощи)