@Span4ev

Как получить ссылку на объект по его атрибуту?

spoiler
Прошу прощения у модератора. При редактровании вопроса я нечаянно задел тег [code] из-за чего пример кода не инкапсулировался. После публикации я сразу же это заметил и стал редактировать вопрос, чтобы исправить проблему, но после сохранения корректной версии вопрос уже удалили. Про 3.4 усвоил.


Простой пример:

class Item:
    def __init__(self, name):
        self.name      = name

tomato = Item('Помидор')   
milk   = Item('Молоко')
apple  = Item('Яблоко')

items = [tomato, apple, milk]

s = []

for i in items:
    s.append(i.name)
    s = sorted(s)

print(s)  # ['Молоко', 'Помидор', 'Яблоко']


Вот список 's'. Можно ли по каждому из атрибутов класса получить ссылки на объекты? Чтобы отсортировать объекты класса в том же порядке, что и порядок атрибутов в списке 's'.
Я постарался максимально ужать пример и не вдаваться в подробности. Нужна сортировка по алфавиту. В список помещаю объекты класса, чтобы далее обращаться к атрибутам каждого из них:
object.name, object.weight, object.cost, object.img и т.д.
Отсортировать список с объектами не могу. Обращаясь к атрибутам каждого объекта и сортируя их - получаю строки. А нужны объекты в том же порядке, что и список с "объект_3.атрибут", "объект_1.атрибут"
  • Вопрос задан
  • 60 просмотров
Решения вопроса 1
Нужно в sorted задавать параметр key, а в нем указывать атрибут.
from operator import attrgetter

sorted(items, key=attrgetter('name'))

https://pythonru.com/osnovy/vozmozhnosti-i-primery...
https://docs.python.org/3/library/operator.html#op...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы