аватар question@mail.ru · 01.01.1970 03:00

Получить последний ключ в словаре Python

Есть словарь:

dicId = {1: [3, 4], 2: [5, 6, 3], 3: [7, 1, 9, 2]}

Нужно получить последний ключ в этом словаре.

dicId.keys() // возвращает набор ключей

Как из них выбрать последний?

аватар answer@mail.ru · 01.01.1970 03:00

Чтобы последний элемент из произвольной коллекции получить, :

>>> d = {'a':1, 'b':2}>>> import collections>>> [last] = collections.deque(d, maxlen=1)>>> last'b'

Это O(n) по времени, O(1) в памяти алгоритм. Для сравнения: list(d)[-1] требует O(n) памяти.

До Питон 3.7, ключи в словаре не упорядочены, поэтому понятие ""последний"" смысла не имело, если не использовать что-то вроде collections.OrderedDict вместо dict:

>>> from collections import OrderedDict>>> d = OrderedDict(a=1, b=2)  # Python 3.6 kwargs order>>> last = next(reversed(d))>>> last'b'

Это оптимальный O(1) по времени и памяти алгоритм. Возможно в будущем этот код будет работать и для встроенного dict:

Последние

Похожие