2010-12-07 37 views

回答

2

您可以通过浮动值

a={'1.12e+3':1,'1.10e+3':5,'1.19e+3':7,...} 
print sorted(a.iteritems(), key=lambda (x,y):float(x)) 
# [('1.10e+3', 5), ('1.12e+3', 1), ('1.19e+3', 7)] 

我猜你想花车反正最终使你可以将它们转换马上的(key, value)对排序:

print sorted((float(x),y) for x,y in a.iteritems()) 
# [(1100.0, 5), (1120.0, 1), (1190.0, 7)] 
7

可能通过简单的转换回数字:

sorted(a, key = lambda x: float(x)) 
['1.10e+3', '1.12e+3', '1.19e+3'] 

这只是给你钥匙的排序副本。我不确定您是否可以写入字典并在原地更改其键列表(由字典上的keys()返回的列表)。听起来有点邪恶。

+0

我需要保持键值链接不变 – Alex 2010-12-07 15:39:50