私はこれを理解することはできません。同一の辞書が 2 つあります。私は標準的な方法を使用して違いを判断しますが、その違いはありません。ただし、特定の値の型は、そうでない場合でも、常に違いとして返されます。たとえば、値が の場合pymongo.bson.ObjectId
、メソッドはそれを同じものとして評価できません。
d1 = {'Name':'foo','ref1':ObjectId('502e232ca7919d27990001e4')}
d2 = {'Name':'foo','ref1':ObjectId('502e232ca7919d27990001e4')}
d1 == d2
戻り値:
True
しかし:
set((k,d1[k]) for k in set(d1) & set(d2) if d1[k] != d2[k])
戻り値:
set([('ref1',Objectid('502e232ca7919d27990001e4'))])
だから私はこれが奇妙だと思いましたね?
d1['ref1'] == d2['ref1'] # True
d1['ref1'] != d2['ref1'] # False
なに???????!?!??!!?