I have created a dictionary in python to deal handle the change for a purchase.
money = { '$100.00' : 0, '$50.00' : 0, '$20.00' : 0,'$10.00' : 0,
'$5.00' : 0, '$1.00' : 0,'$0.25' : 0, '$0.10' : 0, '$0.05' : 0,
'$0.01' : 0}
However when I want to print this, I can't seem to be able to do this from "least to greatest" piece of currency.
This is what I have done in an attempt to sort it:
keyList = list(money.keys())
keyList.sort()
for key in keyList:
print(key, money[key])
However the result given goes from ...$1 -> $10 -> $100 -> $20...Any suggestions so it will be $1 -> $5 -> $10...?
解决方案
This is happening because you are sorting strings, which are sorted lexicographically (order in which it would show up if it was in an English dictionary).
What you want is to sort them by their floatified values, which can be done like this:
>>> money = { '$100.00' : 0, '$50.00' : 0, '$20.00' : 0,'$10.00' : 0,
... '$5.00' : 0, '$1.00' : 0,'$0.25' : 0, '$0.10' : 0, '$0.05' : 0,
... '$0.01' : 0}
>>> for val in sorted(money, key=lambda s: float(s.lstrip("$"))):
... print(val, money[val])
...
$0.01 0
$0.05 0
$0.10 0
$0.25 0
$1.00 0
$5.00 0
$10.00 0
$20.00 0
$50.00 0
$100.00 0