我有列表["Tue", "Wed", "Mon", "Thu", "Fri"]
作为列表,我想将其设为
["Mon", "Tue", "Wed", "Thu", "Fri"]
.
这个怎么排序?
我有列表["Tue", "Wed", "Mon", "Thu", "Fri"]
作为列表,我想将其设为
["Mon", "Tue", "Wed", "Thu", "Fri"]
.
这个怎么排序?
效率不是很高,但如果你有一个他们应该在的顺序列表......
>>> 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
。
或者将它们放入以名称为键并以顺序为值的字典中,然后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
),但您可以使用 partial to sensible, sort before or after default,或获得等效行为list.index
, usekey=d.__getitem__
或相似的
查找并用 1 替换星期一的所有实例,用 2 替换星期二的所有实例,等等排序、重新分配。
http://wiki.python.org/moin/HowTo/Sorting/
您正在寻找词汇排序。作为学习事项,编写自己的函数也很有趣;)
编辑:好的,你只需要一个函数,在一天内返回它的星期几。您可以在函数中简单地使用天字符串数组,然后使用天数周数对元素进行排序,就像老板一样。