Python,如何按浮点数科学格式的键排序字典?

2 投票
2 回答
7272 浏览
提问于 2025-04-16 08:11

我需要按照键的顺序对一个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)]

撰写回答