Добавление чего-либо к списку внутри dict внутри списка в Python - PullRequest
0 голосов
/ 13 ноября 2011

Я пытаюсь создать list из dicts, который будет иметь следующую структуру:

[
    {
        'id': '234nj233nkj2k4n52',
        'embedded_list': []
    },
    {
        'id': 'jb234bhj23423h4b4',
        'embedded_list': []
    },
    ...
]

Изначально этот список будет пустым.

Что мне нужнобыть в состоянии сделать это:

  1. Проверьте, существует ли в списке уже dict с конкретным id
  2. Если существует диктет, содержащий это id,добавьте что-нибудь к этому embedded_list
  3. Если дикт, содержащий это id, не существует, создайте дикт, добавьте его в список.

Я знаю, что могучтобы проверить, существует ли dict в list на основе чего-то внутри этого dict, используя что-то вроде этого:

extracted_dict = next((item for item in list if item['id'] == unique_id), None)

Я не уверен, как добавить что-то к list в пределахdict в течение list эффективно.Есть ли очевидный способ, которого я не вижу (вероятно)?

Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 13 ноября 2011

Во-первых, ваша структура данных должна быть словарем словарей:

{'234nj233nkj2k4n52': {'embedded_list': []},
 'jb234bhj23423h4b4': {'embedded_list': []},
    ... }

Это значительно упростит все необходимые операции.Если внутренние словари содержат только встроенный список, это можно еще более упростить до

{'234nj233nkj2k4n52': [],
 'jb234bhj23423h4b4': [],
    ... }

Теперь все, что вам нужно, это collections.defaultdict(list):

from collections import defaultdict
d = defaultdict(list)
d['234nj233nkj2k4n52'].append(whatever)
1 голос
/ 13 ноября 2011

или просто простой дикт

{
  '234nj233nkj2k4n52' : [],
  'jb234bhj23423h4b4' : []
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...