【发布时间】:2020-07-19 04:14:01
【问题描述】:
假设我们有一本字典:
m_dict = {'2011-04-01': {'asprin': (232, -7, -4, 1), 'glucose': (3, 4, -3)},
'2011-04-02': {'clb': (-7, -2, 8), 'humulin': (3, -6, -3), 'crack': (7,-5)},
'2011-04-03': {'otc': (-1, 34, -45), 'tussin': (-2, 8)} }
我正在尝试根据日期持有的药物数量按降序对该字典进行排序,但如果两个日期的药物数量相同,则按升序对这些日期进行排序。
所以,这种情况下的列表应该是:['2011-04-02', '2011-04-01', '2011-04-03']。
我了解如何根据药物数量进行排序,但是如果药物数量相同,则对如何实现另一个排序条件感到困惑。
这样的?我正在尝试使用理解组合在单个语句中做到这一点。但这不适用于规则:如果两个日期的药物数量相同,则按升序对 date_lst 中的这两个日期进行排序。
date_lst = [key for key in sorted(m_dict.keys(), key = lambda item[key]): len(item[key]))
【问题讨论】:
-
@dspencer:很长一段时间都是如此,但 Python 3.7 dictionaries officially keep stable order.
标签: python sorting dictionary nested list-comprehension