我最近看到一些Java代码,它简单地将一些字符串放入了Java TreeSet中,实现了一个基于距离的比较器,然后通过计算给定问题的得分来解决问题。
我的问题是,
Python中是否有等效的数据结构?
- Java treeset基本上看起来像是一个有序字典,可以使用某种比较器来实现这种排序。
我看到Py3K有一个PEP for Py3K用于OrderedDict,但我正在使用2.6.x。有许多有序字典实现 - 有没有特别推荐的?
PS,只是想补充一下 - 我可能可以导入DictMixin或UserDict并实现自己的排序/有序字典,并通过比较器函数实现它 - 但那似乎有点过度设计。
谢谢。
更新。感谢回答。稍作解释,假设我有一个比较函数被定义为(给定一个特定的值ln),
def mycmp(x1, y1, ln):
a = abs(x1-ln)
b = abs(y1-ln)
if a<b:
return -1
elif a>b:
return 1
else:
return 0
我对如何将此集成到有序字典的排序中还有些不确定链接在此处..。
类似于以下方式:
OrderedDict(sorted(d.items(), cmp=mycmp(len)))
欢迎提出想法。
OrderedDict
不像Java中的TreeMap
。 这里的“有序”是指元素按插入时间排序。这不是你想要的。你基本上正在寻找通过二叉搜索树实现的集合。 - Albert