これは自然言語処理100本ノック2020に挑んだ、とある人間の記録。
他の問題はこちら → 自然言語処理100本ノック2020から逃げるな まとめ
18. 各行を3コラム目の数値の降順にソート
各行を3コラム目の数値の逆順で整列せよ(注意: 各行の内容は変更せずに並び替えよ).確認にはsortコマンドを用いよ(この問題はコマンドで実行した時の結果と合わなくてもよい).
Pythonコード
import sys path = sys.argv[1] with open(path) as f: print(''.join(sorted(f.readlines(), key=lambda l:int(l.split('\t')[2]), reverse=True)))
確認用UNIXコマンド
私の環境は少し特殊(fish)なので、もしかしたら動かないかも。
sort -n -k 3 -r ../popular-names.txt > output_py.txt python NPL100_18.py ../popular-names.txt > output_unix.txt diff output_py.txt output_unix.txt
実行結果
長いので冒頭のみ。
Linda F 99689 1947 Linda F 96211 1948 James M 94757 1947 Michael M 92704 1957 Robert M 91640 1947 Linda F 91016 1949 Michael M 90656 1956 Michael M 90517 1958 James M 88584 1948 Michael M 88528 1954 Michael M 88327 1955 John M 88319 1947 James M 87436 1946 James M 87261 1951 James M 87063 1952 Michael M 86917 1961 James M 86857 1949 Robert M 86604 1952 Robert M 86351 1951 ...