【发布时间】:2015-10-08 13:00:21
【问题描述】:
我有一个 dicts 列表,其中描述了学校中的某些课程,其中有些仍在教授,有些不再教授,有些将在未来教授:
[
{'status': 'DEACTIVE', 'name': 'Music'},
{'status': 'DEACTIVE', 'name': 'Juggling'},
{'status': 'ACTIVE', 'name': 'Chess'},
{'status': 'ACTIVE', 'name': 'Dutch Language'},
{'status': 'COMING', 'name': 'Python'},
{'status': 'COMING', 'name': 'Drinking coffee like a pro'},
]
我现在想订购此列表,以便首先使用 ACTIVE,然后是 DEACTIVE,最后是 COMING。我找到了这样的解决方案:
sorted(a, key=dict.values, reverse=True)
但这仅按字母顺序排序,我想以自定义方式对其进行排序。有人知道我该怎么做吗?
【问题讨论】:
-
您需要编写自己的
key函数,该函数接受字典并返回例如状态的序数。另外,请注意,这可能应该是 "INACTIVE"。 -
@jonrsharpe - 好的,这是一个返回序数的关键函数。知道我该怎么做吗?我对如何处理这个问题有点不知所措。
-
你有 2.5k 代表;您现在应该知道这不是代码编写服务。阅读
sorted上的文档,其中解释了函数应该采用什么形式并链接到操作指南,然后尝试自己实现它。如果遇到困难,您可以返回 minimal reproducible example 和具体问题。 -
似乎你应该有一个列表的字典,其中字典键是活动的、非活动的和即将到来的,每个键的值都是具有该状态的类名列表。 .
-
@jonrsharpe - 你说得对,我知道 SO 不是代码编写服务。我想过循环它们,将它们分隔在单独的列表中,然后再次将这些列表组合在一起,但这似乎不是很 Pythonic。我在 sorted 上查看了文档,但即使在那之后我也不知道该怎么做。如果我的问题是以
I'm too lazy to do this myself-question 形式出现的,请见谅。
标签: python list sorting dictionary