これは自然言語処理100本ノック2020に挑んだ、とある人間の記録。
他の問題はこちら → 自然言語処理100本ノック2020から逃げるな まとめ
19. 各行の1コラム目の文字列の出現頻度を求め,出現頻度の高い順に並べる
各行の1列目の文字列の出現頻度を求め,その高い順に並べて表示せよ.確認にはcut, uniq, sortコマンドを用いよ.
Pythonコード
import sys path = sys.argv[1] dict = {} with open(path) as f: for l in f: key = l.split('\t')[0] dict[key] = dict.get(key, 0) + 1 for key, value in sorted(dict.items(), key=lambda kv: kv[1], reverse=True): print(str(value) + ' ' + str(key))
確認用UNIXコマンド
私の環境は少し特殊(fish)なので、もしかしたら動かないかも。
cut -f 1 ../popular-names.txt | sort | uniq -c | sort -r | tee output_unix.txt
実行結果
長いので冒頭のみ。
118 James 111 William 108 John 108 Robert 92 Mary 75 Charles 74 Michael 73 Elizabeth 70 Joseph 60 Margaret 58 George 58 Thomas 57 David 51 Richard 45 Helen 43 Frank 43 Christopher 41 Anna 40 Edward ...