Получить элемент списка по атрибуту в Python
Мне нужно загрузить список объектов строки базы данных в память, а затем захватить одну из этих строк по ее уникальному идентификатору. Есть ли чистый, питонический способ поиска одного объекта из списка по значению атрибута? Или я просто петлю и сравниваю?
- Итерация через 2 списка и проверка значений
- Как я могу сопоставлять элементы из одного списка в другом в python?
- Как напечатать самые длинные и кратчайшие слова из заданного набора слов?
- Как добавить все элементы списка в другой список
- Производительность 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: Сортировка списка на основе значений словаря
- Добавление в 2D-списки в Python
- найти элементы в списке1, которые также находятся в списке2, и удалить элементы, не входящие в список1
- Python: Почему все еще элементы списка не исчезают после использования процедуры?
- групповые индексы списка в списке списков
- Преобразовать плоский список в список списка в python
- Списки Python и их расщепление
- Python – взвешенное усреднение списка