Ik heb waarden als deze:
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'])
Ik wil de waarden in elke set
in oplopende volgorde sorteren. Ik wil niet sorteren tussen de sets, maar de waarden in elke set.
Antwoord 1, autoriteit 100%
Uit een opmerking:
Ik wil elke set sorteren.
Dat is makkelijk. Voor elke set s
(of iets anders dat herhaald kan worden), sorted(s)
retourneert een lijst van de elementen van s
in gesorteerde volgorde:
>>> 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']
Merk op dat sorted
je een list
geeft, niet een set
. Dat komt omdat het hele punt van een set, zowel in wiskundeals in bijna elke programmeertaal,* is dat het niet geordend is: de sets {1, 2}
en {2, 1}
zijn dezelfde set.
U wilt die elementen waarschijnlijk niet echt als tekenreeksen sorteren, maar als getallen (dus 4.918560000 komt vóór 10.277200999 in plaats van erna).
De beste oplossing is om de getallen in de eerste plaats als getallen op te slaan in plaats van als tekenreeksen. Maar als dat niet het geval is, hoeft u alleen maar een functie key
te gebruiken:
>>> sorted(s, key=float)
['0.000000000', '0.009518000', '0.018384000', '0.030810999', '4.918560000', '10.277200999']
Zie voor meer informatie de Sorteer-HOWTOin de officiële documenten.
* Zie de opmerkingen voor uitzonderingen.