Какой самый простой способ искать список дамт в Python?
-
29-09-2019 - |
Вопрос
Моя база данных в настоящее время возвращает список дамт:
id_list = ({'id': '0c871320cf5111df87da000c29196d3d'},
{'id': '2eeeb9f4cf5111df87da000c29196d3d'},
{'id': '3b982384cf5111df87da000c29196d3d'},
{'id': '3f6f3fcecf5111df87da000c29196d3d'},
{'id': '44762370cf5111df87da000c29196d3d'},
{'id': '4ba0d294cf5111df87da000c29196d3d'})
Как я могу легко проверить, находится ли данный идентификатор в этом списке или нет?
Спасибо.
Решение
Если вы сделаете словарь своего идентификатора поиска,
search_dic = {'id': '0c871320cf5111df87da000c29196d3d'}
id_list = ({'id': '0c871320cf5111df87da000c29196d3d'},
{'id': '2eeeb9f4cf5111df87da000c29196d3d'},
{'id': '3b982384cf5111df87da000c29196d3d'},
{'id': '3f6f3fcecf5111df87da000c29196d3d'},
{'id': '44762370cf5111df87da000c29196d3d'},
{'id': '4ba0d294cf5111df87da000c29196d3d'})
if search_dic in id_list:
print 'yes'
Другие советы
Вот однострочный:
if some_id in [d.get('id') for d in id_list]:
pass
Хотя не очень эффективно.
редактировать - Лучший подход может быть:
if some_id in (d.get('id') for d in id_list):
pass
Таким образом, список не генерируется в полной длине заранее.
Как я могу легко проверить, находится ли данный идентификатор в этом списке или нет?
Сделать набор
keys = set( d['id'] for d in id_list )
if some_value in keys
Не спрашивайте, является ли это «эффективным» или «лучшим». Это включает в себя стандартный компромисс.
Создание набора требует времени. Но поиск тогда мгновенный.
Если вы делаете много поисков, стоимость строительства набора амортизируется по каждому поиску.
Если вы делаете несколько поисков, стоимость строительства набора может быть выше, чем что -то Ilike
{'id':some_value} in id_list
.
any(x.get('id')==given_id for x in id_list)
. Анкет Анкет Анкет Возвращает логический. Эффективность? См. Ответ С.лотта
Вы можете сгладить его с помощью понимания списка и использовать в:
id in [d['id'] for d in id_list]
Вы также можете использовать выражения генератора, которые имеют различные характеристики производительности (и будут использовать меньше памяти, если ваш список огромный):
id in (d['id'] for d in id_list)