Python,当键是科学格式的浮点数时,如何按键对字典进行排序?

时间:2010-12-07 15:37:00

标签: python sorting dictionary

当键是科学格式的浮点数时,我需要按键对Python字典进行排序。

示例:

a={'1.12e+3':1,'1.10e+3':5,'1.19e+3':7,...}

我需要保持键值链接不变 最简单的方法是什么?

2 个答案:

答案 0 :(得分:7)

可能只需转换回数字:

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

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

答案 1 :(得分:3)

您可以按浮点值

(key, value)对进行排序
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)]

我想你最终还是想要漂浮物,所以你可以立即转换它们:

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