どん底から這い上がるまでの記録

どん底から這い上がりたいけど這い上がれない人がいろいろ書くブログ(主にプログラミング)

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 ドキュメント