Python,如何按浮点数科学格式的键排序字典?
我需要按照键的顺序对一个Python字典进行排序,这些键是以科学计数法表示的浮点数。
举个例子:
a={'1.12e+3':1,'1.10e+3':5,'1.19e+3':7,...}
我需要保持键和值之间的关系不变。
有什么简单的方法可以做到这一点吗?
2 个回答
8
可能只需要把它转换回数字就可以了:
sorted(a, key = lambda x: float(x))
['1.10e+3', '1.12e+3', '1.19e+3']
这只是给你一个排序后的键的副本。我不太确定你是否可以直接在字典里写入并改变它的键列表(通过keys()
方法返回的列表)。这听起来有点不太好。
3
你可以根据浮点数值来排序 (键, 值)
这对数据。
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)]