排序工作日文本

时间:2012-12-12 16:27:48

标签: python sorting datetime python-2.7

我列出了["Tue", "Wed", "Mon", "Thu", "Fri"]作为列表,我希望将其作为列表 ["Mon", "Tue", "Wed", "Thu", "Fri"]

如何排序?

3 个答案:

答案 0 :(得分: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']

注意,如果n中存在某个不在m的值,则会引发异常。

或者将它们放入一个名称为键并且作为值的顺序的dict中,然后使用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']

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

答案 1 :(得分:0)

http://wiki.python.org/moin/HowTo/Sorting/

您正在寻找词汇排序。编写自己的函数也很有趣,作为一个学习问题;)

编辑:好的,你只需要一个功能,在一天内返回它的星期数。您可以在函数中使用日期字符串数组,然后使用日期周数对像老板这样的元素进行排序。

答案 2 :(得分:0)

查找并替换所有星期一的实例,包括1,星期二,2,等等,重新分配。