Есть словарь:
dicId = {1: [3, 4], 2: [5, 6, 3], 3: [7, 1, 9, 2]}Нужно получить последний ключ в этом словаре.
dicId.keys() // возвращает набор ключейКак из них выбрать последний?
PythonLib
Питон для всех
question@mail.ru
·
01.01.1970 03:00
Есть словарь:
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: