English Sentence

 

英語の文章

問題ページ

解き方

与えられた文字列を単語に分割し、最も出現頻度が高い単語と、最も文字数が多い単語を見つける。

コードの説明

出現頻度はcollectionsのCounter、文字数については組み込み関数のmax()を使う。どちらも標準で入っている。

input()で入力を受け取り、split()で文字列を空白区切りで単語を分割し、リストにする。リストの中身は単語の集まりになっており、これをCounterに渡すと自動的にリストにある単語をkey、出現頻度をvalueとした、辞書を作成してくれる。most_common()を使うことにより、出現頻度が高い順にソートした辞書を返してくれる。ここではmost_common()に1を渡して最も出現頻度が高い単語を手に入れる。

文字数の長さについてはmax()のkeyに長さを表すlenを渡して、リストにある単語のなかで最も長い単語を手に入れている。

ソースコード

pythonでの実装

from collections import Counter
sentence = input().split()
cnt = Counter(sentence)
print(cnt.most_common(1)[0][0], max(sentence, key=lambda x: len(x)))

別解

他の人の解答を見ていたらもっとスマートな方法があったので紹介しておきます。

s=input().split()
print(max(s,key=s.count),max(s,key=len))

関連リンク

2. 組み込み関数 — Python 3.6.5 ドキュメント

8.3. collections — コンテナデータ型 — Python 3.6.5 ドキュメント