I am trying to sort list of strings containing numbers
a = ["1099.0","9049.0"] a.sort() a ['1099.0', '9049.0'] b = ["949.0","1099.0"] b.sort() b ['1099.0', '949.0'] a ['1099.0', '9049.0']
But list b
is sorting and not list a
In Python, there are two ways, sort() and sorted() , to sort lists ( list ) in ascending or descending order. If you want to sort strings ( str ) or tuples ( tuple ), use sorted() .
You can use Nested for loop with if statement to get the sort a list in Python without sort function. This is not the only way to do it, you can use your own logic to get it done.
You want to sort based on the float
values (not string values), so try:
>>> b = ["949.0","1099.0"] >>> b.sort(key=float) >>> b ['949.0', '1099.0']
use a lambda inside sort to convert them to float and then sort properly:
a = sorted(a, key=lambda x: float(x))
so you will mantain them as strings but sorted by value and not lexicographically
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With