等価性をチェックするために、同じクラスの2つのインスタンスを反復処理しています。このクラスのこれらの2つのインスタンスは、異なる方法で作成されます.1つはpickleから、もう1つはjsonドキュメントから作成されます。リスト内の大文字と小文字を無視して、タプルの両方の要素を並べ替えます。
これらのオブジェクトのプロパティを反復して、等しいかどうかをチェックしていますが、辞書のキーが常に並んでいるわけではないため、正しく比較できません。だから、私はこれらのタプルをソートしようとしましたが、大文字と小文字の区別のために、これらのオブジェクトの両方から同じキーを常に取得することはできません。
alpha VAR_THRESH
chunksize VAR_MAXITER
decay decay
....
を出力し、私は明示的に右側のみlower()
作る場合、私は反対を取得
def __eq__(self, other):
for (self_key, other_key) in sorted(
zip(self.__dict__, other.__dict__),
key=lambda element: (element[0].lower(), element[1].lower())):
print self_key, " ", other_key
....
:例えば
一つの試みは私の左側にソートを与えます
....
key=lambda element: (element[0], element[1].lower())):
....
左側を下にソートしません。
VAR_MAXITER alpha
VAR_THRESH chunksize
alpha VAR_THRESH
chunksize VAR_MAXITER
decay decay
私は要素の両方に.lower()
を省略した場合、私は第二の例を取得します。
正しいキーが常に並んでいることを確認するにはどうすればよいですか?つまり、どのようにしてタプル内の両方の値で並べ替えて、大文字小文字を無視することができますか?
注文が無関係である、dictsが同じオブジェクトを持っている場合、彼らは私が値のいずれかが、NP配列であるため、辞書のキーを反復処理する必要が等しい –