Эффективный способ поиска значения во вложенном словаре? - PullRequest
0 голосов
/ 30 августа 2018

Если у меня есть список вложенных словарей произвольной длины, которые выглядят примерно так:

list_of_dic = [{'A': 1, 'B': 2, 'C': {'name': 'some_name1', ...}},
               {'A': 4, 'B': 1, 'C': {'name': 'some_name2', ...}},
               {'A': 3, 'B': 4, 'C': {'name': 'some_name3', ...}},
               ...]

И я хочу найти вложенный словарь (т. Е. Словарь, связанный с ключом C), который содержит name, который я хочу (каждый name уникален; дубликатов нет), что является наиболее эффективным способ сделать это?

Я могу думать о 2 методах; во-первых, просто пройтись по всему, что звучит как ужасный способ сделать это, а во-вторых:

[x['C'] for x in list_of_dic if x['C']['name'] == 'some_name5'][0]

Есть ли лучший, более эффективный способ сделать это, потому что list_of_dic имеет потенциал быть достаточно длинным. Спасибо.

1 Ответ

0 голосов
/ 30 августа 2018

При вашем подходе вы в конечном итоге перебираете весь список list_of_dict даже после того, как совпадение найдено.

Вы можете использовать next, чтобы получить только первый матч

next((x['C'] for x in list_of_dic if x['C']['name'] == 'some_name5'), None)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...