2012-09-27 20 views
2

我需要排序一个字典,其中键是用字符串表示的级分,并且需要通过其数值来排序:如何按值排序字典,当键是由字符串表示的分数?

即:

exp_time = {"2":10, "1/2":5:, "2.5":11, "1/200":9, "15":3, "1/30":6} 

结果应该是这样的(降序):

15 
2.5 
2 
1/2 
1/30 
1/200 
+0

'dict'的本身不能进行排序,虽然他们的密钥列表即可。 – martineau

+0

您可能也对[python中的按键排序字典](http://stackoverflow.com/q/1319763/355230)中的问题的答案感兴趣。 – martineau

回答

12
>>> import fractions 
>>> exp_time = {"2":10, "1/2":5, "2.5":11, "1/200":9, "15":3, "1/30":6} 
>>> sorted(exp_time, key=fractions.Fraction, reverse=True) 
['15', '2.5', '2', '1/2', '1/30', '1/200'] 
+2

Python标准库FTW。 – orlp

+2

+1,我不知道“分数”模块。我即将发布相同的答案,但手动执行'fractions.Fraction'。 –

+1

值得一提的是,标准字典是**无序**。如果所有OP关心的是这个最终列表,那么应该使用像'collections.OrderedDict'这样的有序字典(Python 2.7+)。 –