Получить элемент списка по атрибуту в Python

Мне нужно загрузить список объектов строки базы данных в память, а затем захватить одну из этих строк по ее уникальному идентификатору. Есть ли чистый, питонический способ поиска одного объекта из списка по значению атрибута? Или я просто петлю и сравниваю?

3 Solutions collect form web for “Получить элемент списка по атрибуту в Python”

Да, вы петли и сравниваете:

items = [item for item in container if item.attribute == value] 

И вы получите список, который можно проверить, чтобы узнать, сколько вы нашли.

Если вы будете делать это много, подумайте о том, чтобы использовать словарь, где ключ – это интересующий вас атрибут.

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

Если вы сделаете что-то вроде этого, вам не нужно ловить исключение, но вместо этого вместо него получить None :

 item = next((i for i in items if i == 'value'), None) 

Вы можете фильтровать :

 matches = filter(lambda obj: obj.attribute == "target value", myListOfObjects) 

Обратитесь к ответу kindall за советом по эффективности. Если вы делаете это много, это не так.

  • Как проверить, присутствует ли индекс списка или нет
  • Python: удаление элемента списка при повторении списка
  • Проверьте, существует ли элемент в кортеже кортежей
  • Как удалить элемент из списка по индексу в Python?
  • Автоматически растущие списки в Python
  • Упорядоченные наборы Python 2.7
  • Python - эмулировать sum (), используя понимание списка
  • Минимальный список в Python с None?
  •  
    Interesting Posts for Van-Lav

    Как предотвратить загрузку страницы моего сайта через сторонний фрейм сайта iFrame

    Как изменить порядок индексированных строк на основе списка в кадре данных Pandas

    Преобразование объектов HTML в Unicode и наоборот

    Кластеризация на основе матрицы расстояний

    Как я могу частично прочитать огромный файл CSV?

    Как разбить целые числа и символы операторов из строки в python?

    Python ValueError: слишком много значений для распаковки

    Извлечь массив (имя столбца, данные) из Pandas DataFrame

    У вас есть дополнительные условия цикла … на основе условия?

    Как найти все обычные буквы в наборе строк?

    Попытка понять вложенные циклы, идентификационную матрицу

    Изменение цикла для организации и сокращения вывода XML

    Как запустить программу Python навсегда?

    Должен ли я использовать «я» для определения переменных / объектов класса instanced, которые мне не нужно будет получать извне?

    Модуль __builtin__ в Python

    Python - лучший язык программирования в мире.