Допустим, у меня есть Предмет со следующим определением:
Item(id: str, sequence: int)
id - случайная строка символов.
последовательность число, представляющее порядок, в котором Item
был введен в структуру данных.
Я хотел организовать все Item
объекты в некоторой структуре данных, которая поддерживает порядок Item
на основе его sequence
. Поэтому я использовал SortedKeyList с ключом они, установленным в sequence
.
import sortedcontainers
items = sortedcontainers.SortedKeyList(key=lambda x: x.sequence)
Для большинства операций это работает нормально. Но проблема в том, что у меня есть операция, которая должна получить Item
с указанием c id
, но нет способа сделать это, используя указанный выше ключ.
Я бы хотел сделать что-то вроде:
items.add(Item('abc', 0))
items.add(Item('www', 1))
items.add(Item('zyx', 2))
# This should be the 2nd item added.
item = items['www']
Дополнительная информация :
Операция, которую я намеревался добавить, должна была бы иметь возможность вернуть N число Item
начиная с указанного c id
.
load_n_items_from_id(num: int, id: str) -> [Item]
Используя приведенный выше пример, этот метод должен вернуть следующий результат:
loaded = load_n_items_from_id(2, 'www')
# loaded should contain [Item('www', 1), Item('zyx', 2)]