自然言語処理100本ノック2020から逃げるな「18. 各行を3コラム目の数値の降順にソート」

これは自然言語処理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
...