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

Мне трудно понять, что будет синтаксисом для последнего ключа в словаре Python. Я знаю, что для списка Python можно сказать это, чтобы обозначить последнее:

list[-1]

Я также знаю, что можно получить список ключей словаря следующим образом:

dict.keys()

Однако, когда я пытаюсь использовать логический следующий код, он не работает:

dict.keys(-1)

В нем говорится, что ключи не могут принимать какие-либо аргументы и 1 дается. Если ключи не могут принимать аргументы, то как я могу обозначить, что мне нужен последний ключ в списке?

XXXXX Я работаю в предположении, что словари Python упорядочены в том порядке, в котором элементы добавляются в словарь с последним последним последним. По этой причине я хотел бы получить доступ к последнему ключу в словаре.XXXXX

Теперь мне говорят, что словарные ключи не в порядке, когда они были добавлены. Как тогда я смогу выбрать последний добавленный ключ?

Ответ 1

Если порядок вставки имеет значение, взгляните на collections.OrderedDict:

OrderedDict - это dict, который помнит порядок, в который были вставлены ключи. Если новая запись перезаписывает существующую запись, исходная позиция вставки остается неизменной. При удалении записи и повторной установке она переместит ее до конца.


In [1]: from collections import OrderedDict

In [2]: od = OrderedDict(zip('bar','foo'))

In [3]: od
Out[3]: OrderedDict([('b', 'f'), ('a', 'o'), ('r', 'o')])

In [4]: od.keys()[-1]
Out[4]: 'r'

In [5]: od.popitem() # also removes the last item
Out[5]: ('r', 'o')

Ответ 2

Похоже, вы хотите это сделать:

dict.keys()[-1]

dict.keys() возвращает список ваших ключей словаря. После того, как вы получили список, индекс -1 позволяет получить последний элемент списка.

Поскольку словарь неупорядочен, бессмысленно получить последний ключ вашего словаря.

Возможно, вы хотите отсортировать их раньше. Это будет выглядеть так:

sorted(dict.keys())[-1]

Ответ 3

Не имеет смысла запрашивать "последний" ключ в словаре, потому что словарные ключи неупорядочены. Вы можете получить список ключей и получить последний, если хотите, но это ни в каком смысле "последний ключ в словаре".

Ответ 4

sorted(dict.keys())[-1]

В противном случае keys являются просто неупорядоченным списком, а последний не имеет смысла и может быть различным для разных версий python.

Ответ 5

Есть абсолютно хорошая причина, чтобы получить последний ключ OrderedDict. Я использую упорядоченный dict, чтобы перечислить моих пользователей, когда я их редактирую. Я использую вызовы AJAX для обновления прав пользователей и добавления новых пользователей. Поскольку AJAX срабатывает при проверке разрешения, я хочу, чтобы мой новый пользователь оставался в той же позиции в отображаемом списке (последний) для удобства, пока я не перезагружу страницу. Каждый раз, когда скрипт запускается, он повторно заказывает словарь пользователя.

Что все хорошо, зачем нужна последняя запись? Поэтому, когда я пишу модульные тесты для своего программного обеспечения, я хотел бы подтвердить, что пользователь остается в последней позиции до тех пор, пока страница не будет перезагружена.

dict.keys()[-1]

Полностью выполняет эту функцию (Python 2.7).

Ответ 6

Вы можете сделать такую функцию:

def getLastItem(dictionary):
    last_keyval = dictionary.popitem()
    dictionary.update({last_keyval[0]:last_keyval[1]})
    return {last_keyval[0]:last_keyval[1]}

Это не изменить оригинальный словарь! Это происходит потому, что функция popitem() возвращает кортеж, и мы можем использовать это для нашей пользы !!

Ответ 7

Существует определенная необходимость получить последний элемент словаря, например, чтобы подтвердить, был ли последний элемент добавлен к объекту словаря или нет.

Нам нужно преобразовать ключи словаря в объект списка и использовать индекс -1, чтобы распечатать последний элемент.

mydict = {'John':'apple','Mat':'orange','Jane':'guava','Kim':'apple','Kate': 'grapes'}

mydict.keys()

вывод: dict_keys (['Джон', 'Мэт', 'Джейн', 'Ким', 'Кейт'])

list(mydict.keys())

вывод: ['Джон', 'Мат', 'Джейн', 'Ким', 'Кейт']

list(mydict.keys())[-1]

вывод: "Кейт"

Ответ 8

В Python 3.6 я получил значение последнего ключа из следующего кода

list(dict.keys())[-1]

Ответ 9

да есть: len(data)-1.

Для первого элемента это: 0