

プログラミング初心者です。  
checkiOを使ってpythonを勉強しています。

「入力はstrとlist。strで入力した文章の中に含まれるlistで指定した単語の個数を辞書型で出力する関数を書け」という問題について質問させてください。

例えば、  
`'''When I was One I had just begun When I was Two I was nearly new''', ['i',
'was', 'three', 'near']))`  
と指定した場合、出力が  
`{'i': 4,'was': 3,'three': 0,'near': 0}`  
となります。

ヒントを参考にしながら以下のようなプログラムを書きました。

[code]

    def popular_words(text: str, words: list) -> dict:
        text_list = text.split()
        answer = {}
        for character in words:
            answer[character] = text_list.count(character)
        return answer
    
[/code]

このプログラムの中で、5行目が理解できません。  
`text_list.count(character)`は理解できるのですが、なぜ左辺に`answer[character]`を入れなければならないのか、またこれがどんな役割を担っているのか理解できていません。  
また、この一行のみで答えの辞書型が出力できているのも不思議に感じております。

初歩的な質問で恐縮ですが、ご教授いただければ幸いです。


CC BY-SA 4.0
2018-12-10T12:59:14.277
51091
2018-12-10T22:06:10.717
2018-12-10T13:39:11.003
3605
31388
question
python
Pythonの辞書型出力に関して

[code]

    answer = {}
    
[/code]

まず注目すべきはここです。`answer`を`{}`としました。  
辞書型は`{key1: value1, key2: value2, ...}`という風に書けますから、`{}`は中身がない辞書です。  
よって`anwser`は辞書型です。

さて、辞書型に中身を追加する場合`dict[key] = value`という風に書けます。  
この場合は`dict`という辞書に`key: value`を追加します。  
(念のために書き添えておくと`key`や`value`が変数の場合は展開されて中身が使われます。)

[code]

    answer[character] = text_list.count(character)
    
[/code]

というわけで上記のように書くと辞書に中身を追加できるのです。


CC BY-SA 4.0
2018-12-10T22:06:10.717
51096
2018-12-10T22:06:10.717
25936
51091
answer