#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 здесь