私は最近、いくつかの文字列をJava TreeSetに入れ、距離ベースのコンパレータを実装し、日没に向かって陽気に進んで、特定の問題を解決するために特定のスコアを計算するJavaコードに出くわしました。
私の質問、
Pythonで利用できる同等のデータ構造はありますか?
- Javaツリーセットは、基本的に、この順序付けを実現するために何らかのコンパレーターを使用できる順序付けされた辞書のように見えます。
OrderedDict用のPy3K用のPEPがあるようですが、2.6.xを使用しています。そこにはたくさんの順序付けられたdict実装があります-特に推奨できる人はいますか?
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
これを、ここに示されている順序付けされたdictリンクに示されている順序付けにどのように統合するかについては少しわかりません。
何かのようなもの、
OrderedDict(sorted(d.items(), cmp=mycmp(len)))
アイデアは大歓迎です。