Получить элемент списка по атрибуту в 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
  • Разница между del, удаление и поп в списках
  • Python: создание нового списка из существующего путем удаления каждого n-го элемента
  • Извлечь первый элемент каждого подписок в python
  • Средний -Питон
  • Разбить список на части на основе набора индексов в Python
  • Как инициализировать список до определенного значения в Python
  • Индексы списка Python должны быть целыми, а не кортежем "
  •  
    Interesting Posts for Van-Lav

    Изменить разрешение imshow в ipython

    Улучшение дизайна кода дегазации выравнивания ДНК

    Запись в дескриптор файла 3 подпроцесса Python.Popen object

    В Python, возможно ли перегрузить memmap Numpy, чтобы удалить себя, когда объект memmap больше не ссылается?

    Как использовать модуль win32gui с Python?

    Ошибка внутреннего сервера при использовании Python OpenId с аутентификацией Google

    Оптимизация для PyPy

    HTTP-запрос Django get vs getlist

    Разделить большой текстовый файл (около 50 ГБ) на несколько файлов

    Где getaddrinfo подходит для разрешения имен?

    dateutil.parser.parse () дает ошибку «initial_value должен быть unicode или None, а не str» на платформе Windows

    Python: стирание строк для использования в XML

    Разбор SGML с открытыми произвольными метками в Python 3

    Создание интерактивной оболочки для приложений .NET и внедрение в нее языков сценариев, таких как python / iron python

    Openshift: приложение не запускается после нажатия из-за OSError: Адрес уже используется

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