Добавить словарь в словарь, чтобы он выглядел больше JSON в Python

У меня есть словарь, который создается в цикле, и мне нужно добавить эти словари к другому. Это какой-нибудь элегантный способ сделать это?

f_temp = df['Relevant findings'].values.tolist()[0:8] f_list = [x for i, x in enumerate(f_temp) if i == f_temp.index(x)] f_num_total = len(f_list) f_rand = random.randrange(1, f_num_total+1) def create_rep(arr, row_data, condname, modality): # get findings params = [] # to_json = [] if condname == 'Mass' and modality == 'Mammography': for i in range(len(arr)): params += grab_data(row_data, 0, 14, 19) row_data += 1 for i in range(f_rand): f = random.choice(f_list) if f == 'Mass': rep_temp = create_rep(iter_params_mass, row, f, r) finding = {f: rep_temp} #and now I have no idea where to go >>>{'Assymetry': {'Assymetry': ['Global asymmetry']}} 

Я хотел бы добавить результаты один за другим в другой словарь, чтобы он выглядел так:

 {'Findings/s': {'Assymetry': {'Assymetry': ['Global asymmetry']}}, {'Mass': {'Shape': ['Oval']}} } 

Любые идеи или, возможно, способ создания вложенных объектов JSON? Я повторяю множество циклов, поэтому я не уверен, что такое лучшая практика.

Вы, кажется, слишком думали об этом.

Значение Findings/s s должно быть списком, тогда можно добавить к нему каждый сгенерированный словарь. Я использую defaultdict только для того, чтобы первая итерация не нуждалась в проверке, существует ли d['Finding'] или нет.

 from collections import defaultdict d = defaultdict(list) for i in range(f_rand): f = random.choice(f_list) if f == 'Mass': rep_temp = create_rep(iter_params_mass, row, f, r) d['Findings/s'].append({f: rep_temp}) 

Примечание : если f не является 'Mass' вы получите NameError так как rep_temp не будет определен, вам нужно решить эту проблему.

Кроме того, вы переназначаете возвращаемое значение create_rep для rep_temp но create_rep ничего не возвращает. Итак, если это не ваш полный код, вы получите неожиданные результаты.

Я думаю, вы ищете что-то вроде этого:

 finding = {} for i in range(f_rand): f = random.choice(f_list) rep_temp = None if f == 'Mass': rep_temp = create_rep(iter_params_mass, row, f, r) finding[f] = rep_temp 

Но я также думаю, что вам нужна последняя строка внутри оператора if? Не знаете, как будут выглядеть остальные петли.