объект ‘method’ не поддается написанию сценариев в python

#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 как целое число. Кажется, единственная причина, по которой он вообще имеет значение, заключается в том, что он еще не был собран в корзину, но имеет значение, превышающее значение из списка понимания.