Python字典中的最后一个键

时间:2013-04-20 21:10:37

标签: python python-2.7

我很难弄清楚Python字典中最后一个键的语法是什么。我知道对于Python列表,可以说这是表示最后一个:

list[-1]

我也知道可以按如下方式获取字典键的列表:

dict.keys()

但是,当我尝试使用逻辑代码时,它不起作用:

dict.keys(-1)

它说密钥不能接受任何参数,并且给出了1。如果键不能使用args,那么我怎么能表示我想要列表中的最后一个键呢?

XXXXX 我的假设是Python字典按照将最新项目最后添加到字典中的顺序排序。出于这个原因,我想访问字典中的最后一个键.XXXXX

我现在被告知字典键根据添加时间而不按顺序排列。那我怎么能选择最近添加的密钥呢?

12 个答案:

答案 0 :(得分:33)

如果广告订单很重要,请查看collections.OrderedDict

  

OrderedDict是一个记住首次插入密钥的顺序的字典。如果新条目覆盖现有条目,则原始插入位置保持不变。删除一个条目并重新插入它将把它移到最后。


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')

答案 1 :(得分:31)

好像你想这样做:

dict.keys()[-1]

dict.keys()返回字典键的列表。获得列表后,-1索引允许您获取列表的最后一个元素。

由于字典是无序的,因此获取字典的最后一个字段是没有意义的。

也许您以前想要对它们进行排序。它看起来像那样:

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

答案 2 :(得分:16)

在字典中询问“last”键是没有意义的,因为字典键是无序的。如果你愿意,你可以获得密钥列表并获取最后一个密钥,但这在任何意义上都不是“字典中的最后一个密钥”。

答案 3 :(得分:5)

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

否则keys只是无序列表,最后一个没有意义,可以在各种python版本上有所不同。

答案 4 :(得分:4)

绝对有理由想要OrderedDict的最后一个键。我在编辑时使用有序的dict列出我的用户。我正在使用AJAX调用来更新用户权限和添加新用户。由于AJAX在检查权限时触发,我希望我的新用户在显示的列表(最后)中保持相同位置以方便我直到我重新加载页面。每次脚本运行时,它都会重新排序用户词典。

这一切都很好,为什么需要最后一个条目?因此,当我为我的软件编写单元测试时,我想确认用户保持在最后位置,直到重新加载页面。

dict.keys()[-1]

完美地执行此功能(Python 2.7)。

答案 5 :(得分:3)

由于python 3.7 dict总是有序(插入顺序),

因为字典的python 3.8 keys(),values()和items()返回:可以反转的视图:

获取最后一个密钥:

next(reversed(my_dict.keys()))  

values()和items()相同

PS,以获取第一把钥匙: next(iter(my_dict.keys()))

答案 6 :(得分:1)

#this 将返回字典的最后一个元素 dictObj[len(dictObj.keys()) - 1]

答案 7 :(得分:0)

您可以执行以下功能:

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

这不会更改原始词典! 发生这种情况是因为popitem()函数返回一个元组,我们可以利用它为我们服务!!

答案 8 :(得分:0)

确实需要获取字典的最后一个元素,例如,确认是否已将最新元素附加到字典对象上。

我们需要将字典键转换为列表对象,并使用索引-1来打印出最后一个元素。

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

mydict.keys()
  

输出:dict_keys([''John','Mat','Jane','Kim','Kate'])

list(mydict.keys())
  

输出:['John','Mat','Jane','Kim','Kate']

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

输出:“凯特”

答案 9 :(得分:0)

在python 3.6中,我从以下代码中获取了最后一个键的值

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

答案 10 :(得分:0)

#to find last key:

dict = {'a':1,'b':2,'c':3,'d':4}
print(dict)

res = list(dict.key())[-1]
print(res)

#to find last value:

dict = {'a':1,'b':2,'c':3,'d':4}
print(dict)

res = list(dict.values())[-1]
print(res)

答案 11 :(得分:-2)

是的,有:len(data)-1

对于第一个元素:0