Сортировка массива со строками и поплавком

a=[3.0,2.5,1.0,'1/3','4/5']

Я хотел бы отсортировать этот массив, я попытался преобразовать строки в другой массив, т.е.

a[3]=['1','3']

затем преобразуя их в float, а затем выполним деление. проблема в том, что она становится более сложной, когда я сортирую их с помощью a.sort, я не знаю, как вернуть их в свою строчную форму. Мне нужно знать, как это сделать, не импортируя модуль фракции

Помоги пожалуйста.

1 ответ

Вам не нужно его возвращать. Используйте key параметр (функцию) sorted, list.sort. Для сравнения используется возвращаемое значение ключевой функции.

>>> def key(n):
... if isinstance(n, str):
... a, b = map(float, n.split('/'))
... n = a / b
... return n
... 
>>> a = [3.0,2.5,1.0,'1/3','4/5']
>>> sorted(a, key=key)
['1/3', '4/5', 1.0, 2.5, 3.0]

licensed under cc by-sa 3.0 with attribution.