Python
中的结构是否支持与C++ STL map
类似的操作,操作的复杂性与C++ STL map
相对应?
答案 0 :(得分:12)
dict
通常足够接近 - 你想要它做什么?
如果答案是“提供订单”,那么for k in sorted(d.keys())
实际上有什么问题?可能会使用太多内存?如果你正在进行大量有序遍历插入的插入,那么确定,点了,你真的想要一棵树。
dict
实际上是哈希表而不是b树。但是map
不是定义的是一个b树,所以它不允许你做一些事情,比如将子树分离为一个新的map
,它只是具有相同的性能复杂性。所有真正需要担心的是当存在大量哈希冲突时dict
会发生什么,但在需要严格的最坏情况性能保证的情况下使用Python必然非常少见。
答案 1 :(得分:11)
Python SortedDict类似于C ++ STL映射。您可以阅读here或here。
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。