gpt4 book ai didi

python - 如何根据两个条件在嵌套字典中创建键列表?

转载 作者:行者123 更新时间:2023-12-03 19:19:20 27 4
gpt4 key购买 nike

假设我们有一本字典:

 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]))

最佳答案

您可以按值元组、字典元素的长度(否定以降序排序)然后按键对列表进行排序:

date_lst = [key for key in sorted(m_dict.keys(), key=lambda k: (-len(m_dict[k]), k))]

输出:

['2011-04-02', '2011-04-01', '2011-04-03']

请注意,自 sorted 起,您可以只使用 m_dict 而不是 m_dict.keys()dict 进行排序时对键进行操作,而不是对值进行操作(因为这是 dict 作为迭代器返回的值)。所以你可以简化为:

date_lst = [key for key in sorted(m_dict, key=lambda k: (-len(m_dict[k]), k))]

关于python - 如何根据两个条件在嵌套字典中创建键列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61072085/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com