Для сортировки чисел в том, что имеет смысл для людей, вы должны убедиться, что они представлены в виде чисел, а не в виде текста:
- например, «5» является строка, представляющая число, не число так
example_list = ['5', '10']
, если отсортировано даст `['10', '5'] , потому что для сравнения '5' против '1'; по одному персонажу за раз.
Чтобы получить результат, который вы, вероятно, хотите, вы должны сделать следующее:
data = [('18.3G', 'pgaur'), ('29.6G', 'adsoni'), ('5.51G', 'keyur'), ('10.8G', 'adityac')]
sorted_list = sorted(data, key=lambda x: float(x[0][:-1]))
print(sorted_list)
# prints [('5.51G', 'keyur'), ('10.8G', 'adityac'), ('18.3G', 'pgaur'), ('29.6G', 'adsoni')]
Обратите внимание на разрезание на x[0]
. Он принимает все символы в x[0]
отдельно от последнего ('G'
), так как это испортит сортировку числа. Затем нарезанный x[0]
преобразуется в float с float()
и используется для сортировки. Наконец, результаты сохраняются в новом списке.
Как вы хотите отсортировать данные? Это ключ или по стоимости? – d3r1ck
сортирует данные, но буквенно-цифровыми, поскольку они являются строками, а не цифрами. Также вы не сохраняете полученный список в любом месте. –
'sorted (data, key = lambda x: x [1])' сортирует данные по значению в алфавитном порядке. – d3r1ck