【发布时间】:2015-02-17 22:27:09
【问题描述】:
我有一个名为“times”的字典,它将键映射到代表时间的字符串值:
times = {'key1': '12.23', 'key2': '43:53.29', 'key3': '1:38:11.50r'}
字符串采用 [hours]:[minutes]:[seconds].[milliseconds][r] 的形式 每个字段都是可选的。 r 是一个标志,它不依赖于任何其他正在填充的值,也不影响排序。 [hours] 要求存在 [minutes] 及以下,但 [minutes] 不需要存在 [hours]。
我希望得到一个按其值的时间顺序排序的键列表。
我有以下几点:
standings = sorted(times, key=times.__getitem__)
但它仅根据字符串值进行排序。我是 python 新手,但如果我使用的是 java,我可能会编写一个带有自定义 compareTo() 函数的 Time 类来让排序工作。
我可以编写一个函数,将字符串转换为以毫秒为单位的时间,然后根据它进行排序,但不知道如何在 sorted() 函数中使用'key='。
【问题讨论】:
-
50r中的'1:38:11.50r'是什么? -
半秒,在接力赛中(这些是比赛时间)。 'r' 只是一个标志,对排序没有任何意义
标签: python sorting dictionary lambda strptime