Python中是否有类似于C ++ STL map的结构?

时间:2010-09-06 23:12:17

标签: c++ python

Python中的结构是否支持与C++ STL map类似的操作,操作的复杂性与C++ STL map相对应?

6 个答案:

答案 0 :(得分:12)

dict通常足够接近 - 你想要它做什么?

如果答案是“提供订单”,那么for k in sorted(d.keys())实际上有什么问题?可能会使用太多内存?如果你正在进行大量有序遍历插入的插入,那么确定,点了,你真的想要一棵树。

dict实际上是哈希表而不是b树。但是map不是定义的是一个b树,所以它不允许你做一些事情,比如将子树分离为一个新的map,它只是具有相同的性能复杂性。所有真正需要担心的是当存在大量哈希冲突时dict会发生什么,但在需要严格的最坏情况性能保证的情况下使用Python必然非常少见。

答案 1 :(得分:11)

Python SortedDict类似于C ++ STL映射。您可以阅读herehere

  

SortedDict是订单所在的键值对的容器   根据彼此有序的关系强加于钥匙。   与Python的内置dict数据类型一样,SortedDict支持快速   按键插入,删除和查找。

答案 2 :(得分:6)

我相信标准的python类型dict()在大多数情况下都能解决问题。与C ++的std :: map的区别在于dict被强制为哈希映射,C ++的映射是基于树的。

答案 3 :(得分:2)

Python dictionaries [5.5]

答案 4 :(得分:2)

你有没有看过Python dictionaries

答案 5 :(得分:1)

查看bintrees模块(pip install bintrees)。该软件包提供用Python和Cython / C编写的Binary-RedBlack和AVL-Tree。