Создание списка значений для каждого элемента в словаре в списке - PullRequest
0 голосов
/ 02 марта 2020

У меня очень большой список, содержащий вложенный словарь, который также содержит много списков. Я хотел бы взять значения из поддиректории и сохранить их в списке под новым ключом в основном словаре. Это то, что я пытался, но результат не то, что я хочу. Я подозреваю, что проблема с отступом, но я могу ошибаться. Я довольно новичок в python.

for p in primary_dict:
    list_i_want  = []
    for element in p['list_in_a_dict']:
        for new_element in element['item_for_list_i_want']:
            list_i_want.append(new_element)        

Основной словарь выглядит примерно так. Если я делаю эту команду:

primary_dict[0]['list_in_a_dict]

Вывод:

[{'item_for_list_i_want': ['item1', 'item2', 'item3'],
  'irrelevant': 'details'},
 {'item_for_list_i_want': ['item2', 'item4'],
  'irrelevant': 'other details'}]

Что бы я хотел, чтобы при вводе этой команды:

primary_dict[0][' list_i_want']

, чтобы иметь эти выходные данные:

['item1', 'item2', 'item3','item2', 'item4']

Мой дикт - это список других словарей, поэтому я также хочу его для primary_dict [1] ['list_i_want'], primary_dict [2] ['list_i_want'] , et c.

Ответы [ 2 ]

1 голос
/ 02 марта 2020
result = []
for p in primary_dict:
    temp = {}
    list_i_want  = []
        for element in p['list_in_a_dict']:
            for new_element in element['item_for_list_i_want']:
                list_i_want.append(new_element)
    temp['list_i_want'] = list_i_want
    result.append(temp)

Это ваш желаемый результат? Результат результата [0] [list_i_want] будет тем, что вы хотели.

1 голос
/ 02 марта 2020

Вы можете сделать понимание списка, если хотите

your_list = [{'item_for_list_i_want': ['item1', 'item2', 'item3'],
  'irrelevant': 'details'},
 {'item_for_list_i_want': ['item2', 'item4'],
  'irrelevant': 'other details'}]


items = [ 
     item 
     for your_dicts in your_list
     for key, val in your_dicts.items()
     for item in val
     if key == 'item_for_list_i_want'
]
print(items)
...