Python 字典中的最后一个键

新手上路,请多包涵

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

 list[-1]

我也知道可以得到字典的键列表,如下所示:

 dict.keys()

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

 dict.keys(-1)

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

我在假设 Python 字典按照项目添加到字典中的顺序排序的假设下进行操作,最近的项目最后。出于这个原因,我想访问字典中的最后一个键。

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

原文由 cbbcbail 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 408
2 个回答

如果插入顺序很重要,请查看 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')

更新:

不再需要 OrderedDict,因为从 Python 3.7 开始,字典键正式按插入顺序排序(在 3.6 中非官方)。

对于这些最新的 Python 版本,您可以只使用 list(my_dict)[-1]list(my_dict.keys())[-1]

原文由 root 发布,翻译遵循 CC BY-SA 4.0 许可协议

看起来你想这样做:

 dict.keys()[-1]

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

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

也许您想先对它们进行排序。它看起来像这样:

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

笔记:

在 Python 3 中,代码是

list(dict)[-1]

*更新:

这已不再是这种情况。字典键从 Python 3.7 开始正式订购(在 3.6 中非正式订购)。

原文由 aldeb 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题