#python #constraint-programming
#python #программирование ограничений
Вопрос:
Я реализую минимальные оставшиеся значения CSP в python.И я получил несколько ошибок.
Я запускаю с python3, а также с интерпретатором python2.
def select_unassigned_variable(assignments, csp):
variables = [var for var in csp.nodes()
if var not in assignments.keys()]
if not variables:
return None
return min(variables, key=(lambda var: (len(csp.nodes[var]['domain']))))
Я получил ошибку типа:
return min(variables, key=(lambda var: (len(csp.nodes[var]['domain']))))
TypeError: 'method' object is not subscriptable
Ответ №1:
измените на что-то вроде
key=(lambda var: (len(csp.nodes()[var]['domain']))))
Комментарии:
1. Все еще ошибка. индексы списка должны быть целыми числами или фрагментами, а не str
2. Это потому, что
nodes
это (по-видимому) список, и вы не определилиvar
как целое число. Кажется, единственная причина, по которой он вообще имеет значение, заключается в том, что он еще не был собран в корзину, но имеет значение, превышающее значение из списка понимания.