Ошибка типа: () отсутствует 1 требуемый позиционный аргумент: ‘b’ (molfile_to_params.py )

#python #python-3.x #debugging #lambda #bioinformatics

#python #python-3.x #отладка #лямбда #биоинформатика

Вопрос:

В настоящее время я отлаживаю файл с именем molfile_to_params.py это модуль PyRosetta, но в настоящее время у меня возникли проблемы со строкой кода, которую я не знаю, как отлаживать. Об этом уже есть две статьи, но это не подходит для моего случая.

 tmp_children.sort(key=(lambda a,b: cmp(a.is_H, b.is_H)))
 

Программа выдает ошибку, о которой я уже упоминал, и показывает эту строку как источник проблемы. Но это не исходная строка.

 tmp_children.sort(lambda a,b: cmp(a.is_H, b.is_H))
 

Это была исходная строка, и она выдала ошибку: TypeError: sort() не принимает позиционных аргументов
Поэтому я добавил «key =», который я видел в другой записи.
Я всего лишь второкурсник HS, поэтому мои знания Python ниже среднего, поэтому я был бы благодарен, если сообщество сможет помочь в этом.
Спасибо!

Комментарии:

1. Что такое tmp_children ?

2. Кто бы это ни написал, он ошибается. key это ключевая функция, которая принимает один аргумент.

Ответ №1:

Предполагая, что tmp_children это список, тогда key параметр .sort получает только один элемент за раз.
То, что вы пытаетесь использовать, — это cmp параметр, который был доступен в python 2, но не в python 3. попробуйте изменить свой код следующим образом:

 tmp_children.sort(key=lambda a: a.is_H)
 

вы можете прочитать больше о сортировке python здесь