Последний ключ в словаре 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