排序工作日文本

Gar*_*eld 2 python sorting datetime python-2.7

我有列表["Tue", "Wed", "Mon", "Thu", "Fri"]作为列表,我想把它作为 ["Mon", "Tue", "Wed", "Thu", "Fri"].

怎么排序呢?

Jon*_*nts 9

效率不高,但是如果你有一个他们应该在的订单列表......

>>> m = ["Mon", "Tue", "Wed", "Thu", "Fri"]
>>> n = ["Tue", "Wed", "Mon", "Thu", "Fri", "Tue", "Mon", "Fri"]
>>> sorted(n, key=m.index)
['Mon', 'Mon', 'Tue', 'Tue', 'Wed', 'Thu', 'Fri', 'Fri']
Run Code Online (Sandbox Code Playgroud)

请注意,如果某个值出现在此将抛出一个异常n,是不是在m.

或者将它们放入一个名称为关键字和命令作为值的字典中,然后key=your_dict.get用作键...类似于:

>>> d = {name:val for val, name in enumerate(m)}
>>> d
{'Fri': 4, 'Thu': 3, 'Wed': 2, 'Mon': 0, 'Tue': 1}
>>> sorted(n, key=d.get)
['Mon', 'Mon', 'Tue', 'Tue', 'Wed', 'Thu', 'Fri', 'Fri']
Run Code Online (Sandbox Code Playgroud)

这不会抛出异常(除了在Py3.x上你会在尝试排序时遇到错误None),但是你可以使用部分理智,在默认之前或之后排序,或者获得等效行为list.index,使用key=d.__getitem__或类似