我列出了["Tue", "Wed", "Mon", "Thu", "Fri"]
作为列表,我希望将其作为列表
["Mon", "Tue", "Wed", "Thu", "Fri"]
。
如何排序?
答案 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,等等,重新分配。