Есть ли способ передать пользовательскую функцию сравнения равенства при создании словаря python, чтобы он не использовал компараторы по умолчанию __eq__
или hash
? Я надеюсь, что есть способ сделать это, но пока не смог его найти.
edit: Я ищу способ предоставить различные определения равенства объектов для классов, которые я определил. Например:
class A:
def __init__(self, a, b):
self.a = a
self.b = b
def c1(a1, a2): # assume both are A objects
return a1.a == a2.a
def c2(a1, a2):
return a1.b == a2.b
# is this possible?
d1 = dict(cmp=c1)
d2 = dict(cmp=c2)
Я знаю, что могу переопределить __eq__
et c в определении моего класса, но я могу переопределить его только один раз. В Java я могу использовать TreeMap , и я ищу эквивалент в Python.