# Sorting a set of values

Each Answer to this Q is separated by one/two green lines.

I have values like this:

``````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'])
``````

I want to sort the values in each `set` in increasing order. I don’t want to sort between the sets, but the values in each set.

From a comment:

I want to sort each set.

That’s easy. For any set `s` (or anything else iterable), `sorted(s)` returns a list of the elements of `s` in sorted order:

``````>>> 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']
``````

Note that `sorted` is giving you a `list`, not a `set`. That’s because the whole point of a set, both in mathematics and in almost every programming language,* is that it’s not ordered: the sets `{1, 2}` and `{2, 1}` are the same set.

You probably don’t really want to sort those elements as strings, but as numbers (so 4.918560000 will come before 10.277200999 rather than after).

The best solution is most likely to store the numbers as numbers rather than strings in the first place. But if not, you just need to use a `key` function:

``````>>> sorted(s, key=float)
['0.000000000', '0.009518000', '0.018384000', '0.030810999', '4.918560000', '10.277200999']
`````` 