сортировка списка объектов по значениям атрибутов, порядок значений атрибутов в другом списке - PullRequest
2 голосов
/ 06 апреля 2019
a = ['123b4', '234v5', 'lobf56']
b = [obj1, obj2, obj3] # where each obj is list of object which has attribute called 'serial' which matches serial numbers in list #a

Где obj1.serial - 234v5, obj2.serial - lobf56, а obj3.serial - 123b4

tmplist=list()
for each in a:
    for obj in b:
        if each == obj.serial:
            tmplist.append(obj)

print(tmplist)

. Вывод: [obj3, obj1, obj2]

ЯВ настоящее время можно добиться сортировки указанным выше способом.Но есть ли лучший способ сделать это?

1 Ответ

1 голос
/ 06 апреля 2019

Помогает ли понимание списка ?

[obj for each in a for obj in b if each == obj.serial]

Если вы сравните время между ними, ваш подход займет:

1.6 µs ± 25.5 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

Для понимания списка:

1.37 µs ± 18.2 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

Поэтому, если под «лучшим способом сделать это» вы подразумеваете эффективность.Это определенно имеет значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...