2012-12-12 62 views
1

我有列表["Tue", "Wed", "Mon", "Thu", "Fri"]作爲列表,我想使它成爲 ["Mon", "Tue", "Wed", "Thu", "Fri"]分類週日文本

如何對此進行排序?

+1

您需要一個序號到每個值(即[1,2,3,4,5]),因爲字母排序不起作用。我認爲這是一個人爲的例子,因爲實際上,您可以創建一個具有預期順序的列表。 –

+0

這是一個散列圖嗎? – phaazon

+0

@skp:礦也是一個人爲的例子。問題是,您必須爲訂購添加其他信息。 –

回答

7

不是非常有效的,但如果你有他們應該是在順序表...

>>> 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時遇到錯誤),但您可以使用部分變得明智,在缺省之前或之後進行排序,或者獲得等同行爲list.index,使用key=d.__getitem__或類似的

0

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

你正在尋找一個詞彙的排序。編寫自己的函數也很有趣,作爲一個學習的問題;)

編輯:好吧,你只需要一個函數,一天,返回它的一週數。您可以簡單地在函數中使用一個日期字符串數組,然後使用星期數來對像老闆這樣的元素進行排序。

+1

我在鏈接中看不到詞法排序。你是否指的是Decorate-Sort-Undecorate? –

+0

詞法排序不適用於你的情況。根據你的例子,你會得到[「星期一」,「星期五」,「星期四」,「星期二」,「星期三」],如果你用詞法排序 –

0

查找並替換1的所有星期一,2星期二,等等,重新分配。