2016-05-20 40 views
1

単語のリストをソートし、それらを逆順で辞書順に並べるコードを作る必要があります。たとえば、リスト["harry", "harra", harrb"]がある場合、リストが["yrrah", "arrah","brrah"]になるように各単語を逆にする方法が必要です。次に、それを辞書順にソートし、元の順序に戻す必要があります。したがって、["harra", "harrb", "harry"]のようになります。私はファイル 'ifile'から単語を取っていますが、このコードでは、特定の数の文字「n」で単語を注文しています。ここでリストの順序を逆順にして辞書順にソートする

は、これまでの私のコードです:

def getRhymeSortedCount(n,ifile,file): 
    word_list = [] 
    for word in ifile: 
     if len(word) == n: 
      word_list.append(word.strip()) 
    arr = word_list 
    arr.sort(key = lambda x : x[::-1]) 
    ofile.write("\n".join(word_list)) 

それは正しく彼らの最後の文字で単語を注文しますが、=「N」 方法私は私のLEN文を変更することができます文字の数との言葉を取ってイマイチn文字の単語だけをつかむ?

+1

は、基本的には、各単語の末尾から辞書式順序にそれを置くが、それでも、元の単語としてそれらを示していますリスト。それで、単語を逆順に並べ替えてから、逆にします。 – expertinthemaking22

答えて

6

簡単なラムダ関数を使用して逆転した文字列

word_list = ["harry","harra", "harrb"] 
word_list.sort(key=lambda str: str[::-1]) 
+0

21,000語のような単語の完全なリストが必要です。だから、word_list = ["harry"、 "harra"、 "harrb"]と書くのではなく、何を書くべきか? – expertinthemaking22

+0

それは単語がどこにあるかによって異なります。ファイルからそれらを取得した場合は、そのファイルを読み込んでリストに入れます。 –

+0

@ expertinthemaking22あなた自身の質問でリストを作成するためのコードはすでにあります。 _your_コードですか? – BlackJack

2

ことをソートするキーを指定 -

arr = ["harry","harra", "harrb"] 

arr.sort(key = lambda x : x[::-1]) 

print(arr) 

出力 -

['harra', 'harrb', 'harry'] 
+0

これは正しい注文を得るが、 "n"個の文字を持っている単語を注文する必要もある。私のlenステートメントの配置が間違っていますか? – expertinthemaking22

+0

そのためには、 'ifile'が何であるかを記述する必要があります。 –

+0

これを行うために私のコードをどのように変更できますか? – expertinthemaking22

0

感触を誰かがやりたいようにあなたのための宿題 - ここで答えを理解するために少し解凍する必要があります

0123ここで学ぶための
word_list = ['harry', 'harra', 'harrb', "ignore_me"] 
[y[::-1] for y in sorted([ x[::-1] for x in word_list if len(x) == 5])] 

もの:

  • リストの内包あなたは(あまりにも、その逆で)文字リストとして文字列をスライスすることができます
  • [list_of_xsにおけるxに対するf(x)が表現場合]
  • sorted(mylist)はリストのソートされたバージョンを返す
  • ここでは使用されていませんが、ここでは逆のチェックをしています(mylist)。あなたはこれらを入れ子にすることができます:逆転(ソート(マイリスト)) - きれいに! (私の溶液中で使用されていない)

(おお、私はラムダの答えが好き)

関連する問題