Сортировка набора значений [закрыто]
у меня есть такие значения:
set(['0.000000000', '0.009518000', '10.277200999', '0.030810999', '0.018384000', '4.918560000'])
set(['4.918859000', '0.060758000', '4.917336999', '0.003949999', '0.013945000', '10.281522000', '0.025082999'])
Я хочу отсортировать значения в каждом set
в порядке возрастания. Я не хочу сортировать между множества, а значения в каждом наборе.
1 ответ:
из комментария:
Я хочу отсортировать каждый набор.
это легко. Для любого набора
s
(или что-нибудь еще можно повторить),sorted(s)
возвращает список элементовs
в отсортированном порядке:>>> s = set(['0.000000000', '0.009518000', '10.277200999', '0.030810999', '0.018384000', '4.918560000']) >>> sorted(s) ['0.000000000', '0.009518000', '0.018384000', '0.030810999', '10.277200999', '4.918560000']
отметим, что
sorted
дает вамlist
, а неset
. Это потому, что весь смысл набора, как в математика и почти каждое Программирование язык,* заключается в том, что он не приказал: наборы{1, 2}
и{2, 1}
тот же набор.
вы, вероятно, действительно не хотите сортировать эти элементы как строки, но как числа (так что 4.918560000 придет до 10.277200999, а не после).
лучшее решение, скорее всего, будет хранить числа как числа, а не строки в первую очередь. Но если нет, то вам просто нужно использовать
key
функция:>>> sorted(s, key=float) ['0.000000000', '0.009518000', '0.018384000', '0.030810999', '4.918560000', '10.277200999']
дополнительные информацию смотрите в разделе сортировка HOWTO в официальных документах.
* смотрите комментарии для исключений.