2017-03-13 4 views
0
vowels = ['a', 'e', 'i', 'o', 'u'] 
word = input("Provide a word to search for vowels: ") 

found = {} 

for letter in word: 
    if letter in vowels: 
     found.setdefault(letter, 0) 
     found[letter] += 1 

for k, v in sorted(found.items()): 
    print(k, 'was found', v, 'time(s).') 

私はPythonおよび一般的なプログラミングの初心者です。入力が「良い」の場合、出力「o」が2回検出されました。コードは正常に動作しますが、コードの最後のブロックが私を混乱させます。変数kは文字oを生成し、変数vは数字2を生成します。これは辞書からのキーセットです。この出力を生成するためにコードはどのように解釈されますか?はソートされた関数を持つステートメントのために動作します。

+0

あなたを混乱させるforループの構文、または実際の値がどのようにして辞書の中で終わるのか? – languitar

+2

あなたが繰り返し処理しているものを見るには 'print(sorted(found.items()))'を試してみませんか?それであなたはあなた自身の質問に答えることができるかもしれません。また、あなたがしようとしていることについて 'collections'モジュールの' Counter'を見てください。 –

+0

'.items()'辞書メソッドが返すものを理解する必要があります。あなたはGoogleのことができます.. 'sorted()'については忘れてください。それは単にデータを並べ替えるだけです。 –

答えて

1

sorted() functionは入力からソートされたリストを生成します。その入力はfound.items() objectであり、それ自体が辞書からの(key, value)の対を含むタプルの繰り返し可能です。タプルは辞書順に並べ替えられているので(最初の要素を比較し、次に等しい、2番目の要素など)、アルファベット順にソートされた(key, value)のリストのリストになります。

あなた自身は、対話インタプリタでこれを試してみることができます。もちろん

>>> vowels = ['a', 'e', 'i', 'o', 'u'] 
>>> word = 'good' 
>>> found = {} 
>>> for letter in word: 
...  if letter in vowels: 
...   found.setdefault(letter, 0) 
...   found[letter] += 1 
... 
0 
1 
>>> found 
{'o': 2} 
>>> list(found.items()) 
[('o', 2)] 
>>> sorted(found.items()) 
[('o', 2)] 

goodだけユニークな母音、oが含まれているので、ソートはほとんどがあります。たった1つの(key, value)ペアのソートされたリストは、順序の変更を表示しません。

あなたは、より複雑な単語をしようとした場合は、ultrarevolutionariesのように、あなたがはるかに興味深い結果を得るだろう:

>>> word = 'ultrarevolutionaries' 
>>> found = {} 
>>> for letter in word: 
...  if letter in vowels: 
...   found.setdefault(letter, 0) 
...   found[letter] += 1 
... 
0 
0 
0 
0 
1 
0 
1 
1 
1 
1 
>>> list(found.items()) 
[('u', 2), ('a', 2), ('e', 2), ('o', 2), ('i', 2)] 
>>> sorted(found.items()) 
[('a', 2), ('e', 2), ('i', 2), ('o', 2), ('u', 2)] 

項目一次外で、uaeoiをアルファベット順ではありません。他方、である。a,e,i,o,u

+0

はい、今私には明らかです。多くの人がキーペアでタプルのシーケンスを返す「項目」と呼ばれる辞書のメソッドについて詳しく述べ、助言しました。これらのキーのペアは、forループの反復で便利です。 – wavemose

+0

助けてくれてうれしい!あなたがそれが役に立ったと思ったら、[私の答えを受け入れる](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)を自由に感じてください。 :-) –

関連する問題