Python支持排序字典 - 类似于C++映射?

Lin*_* Ma 4 c++ python dictionary

我使用的是Python 2.7.x. 我有一个字典(我的意思是{}),键是int,值是字符串.我想检索具有最小整数值的键.在C++中,我认为我们可以使用map,它对键进行排序.在Python中,不确定我们是否可以利用类似的东西?如果我的理解是正确的,Python字典(我的意思是{})不按键排序.

林先生,提前谢谢

mha*_*wke 7

更新

当在字典中找到最小密钥时,OP表示需要O(1)性能.试试这个sortedcontainers模块.它提供了一个SortedDict类:

>>> from sortedcontainers import SortedDict
>>> d = SortedDict({100: 'a', 27: 'b', 1234: 'c'})
>>> d.keys()
SortedSet([27, 100, 1234], key=None, load=1000)
>>> d.keys()[0]
27
>>> d[d.keys()[0]]
'b'
Run Code Online (Sandbox Code Playgroud)

对于Python内置字典,您可以使用它min(d)来查找最低密钥:

>>> d = {100: 'a', 27: 'b', 1234: 'c'}
>>> print(d)
{1234: 'c', 27: 'b', 100: 'a'}
>>> print(min(d))
27
>>> print(d[min(d)])
b
Run Code Online (Sandbox Code Playgroud)

  • 或者,而不是排序所有键,只需采取最小值:min(d.keys()) (4认同)
  • 应该提到的是,在`map.first()` 的等效 C++ 代码中,`min()` 将是 O(n) 而不是 O(1)。根据需要,这可能重要也可能无关紧要。 (2认同)