2012-02-12 11 views
0

私はリストを持っている、すなわちPythonのリストの並べ替え

ls= [u'Cancer',u"Men's",u'Orthopedics',u'Pediatric',u"Senior's",u"Women's"] 

ls.sortは()によるリスト要素内の単一引用符の存在のために、ここで動作するようには思えません。

このリストを並べ替える必要があります。何か案が???

+4

あなたのリストがすでにソート、および 'ls.sortされます() 'はそのまま期待しています。あなたの問題は何ですか? –

+1

「うまくいかない」とはどういう意味なのかを説明してください。 –

+2

初心者のためのlist.sortの一般的な落とし穴の1つは、何も返さないということです(実際には "None"を返す)ので、 'sortedlist = mylist.sort()'を実行しても機能しません。 'sortedlist = sorted(mylist)'のようなリストのコピーが必要な場合 – jsbueno

答えて

5

実際には、質問有効であり、答えは一般的なケースの中に正確に正しいではありません。 試験材料がすでにソートされていないた場合、それは正しくアルファベット順に取得しないだろうが、'のリストが間違った順序に並べ替えることが原因となります

>>> l = ["'''b", "a", "a'ab", "aaa"] 
>>> l.sort() 
>>> l 
["'''b", 'a', "a'ab", 'aaa'] 
>>> from functools import partial 
>>> import string 
>>> keyfunc = partial(string.replace, old="'", new="") 
>>> l.sort(key=keyfunc) 
>>> l 
['a', 'aaa', "a'ab", "'''b"] 
+0

あなたが私の答えを正確には正しくないと言えば、正確には正確ではないものを明確にしてください。 –

+0

kimvaisが正しいです。この説明はより正確です。おはよう男 – user1170364

+1

@ user1170364:再考してください。この答えは、 '' '' ''はリストが間違った順序にソートされる原因となります。単に真実ではありません。真実は ''はすべての英数字の前にソートされています。これは「間違っていません」ではなく、特定の文脈ではあなたが望むものではないかもしれないということです。 –

3
>>> ls 
[u'Cancer', u"Men's", u'Orthopedics', u'Pediatric', u"Senior's", u"Women's"] 
>>> ls.sort() 
>>> ls 
[u'Cancer', u"Men's", u'Orthopedics', u'Pediatric', u"Senior's", u"Women's"] 

リストは最初にソートされていたので変更されませんでした。 sort'に問題を持っていない - しかし、それはAZAZ文字の前に並べ替えますのでご注意:

>>> ls 
[u'abc', u'abz', u"ab'"] 
>>> ls.sort() 
>>> ls 
[u"ab'", u'abc', u'abz'] 
>>> 
+1

'import string'と 'ls.sort(key = string.lower)' – Kimvais

+0

これはまさにこの正しいケースですが、一般的ではありません@EliBenderskyは私の例を見てください。例えば '[" a'b "、" aa "] – Kimvais

+0

@Kimvais:私は本当にあなたが意味することを理解していませんが、ちょっと、OPがあなたの答えに見つかったら、私は気にしません!良い彼のために。 –

関連する問題