Сортировка набора значений [закрыто]


у меня есть такие значения:

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 62

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 в официальных документах.


* смотрите комментарии для исключений.