У меня есть такой метод:
def satisfied(self, assignment: Dict[str, List[str]]) -> bool:
row: str = self.variables[0]
column: str = self.variables[1]
# If either variable is not in the assignment then it is not
# yet possible for them to conflict
if row not in assignment or column not in assignment:
return True
row_num: int = int(row[3:])
col_num: int = int(column[3:])
return assignment[row][col_num] == assignment[col][row_num] # here is this error
, и он называется так:
def revise_during_search(self, x: V, y: V, value: D, constraint: Constraint[V, D], purged_values: Dict[V, List[D]]) -> bool:
revised: bool = False
for val in self.domains[y]: # val is also type of D
if not constraint.satisfied({x: value, y: val}):
... something happens here
Итак, как вы можете видеть V
это str
nad D
is List[str]
.
Когда вызывается метод satisfied
, я получаю такую ошибку:
File "file.py", line 87, in satisfied
return assignment[row][col_num] == assignment[col][row_num]
TypeError: unhashable type: 'list'
Но я не понимаю, потому что когда я вызываю assignment[row]
, где row
это строка, которая дает мне List
, и я использую col_num
, это число, чтобы получить конкретное c значение.