2018年02月25日

言語処理100本ノックでPython入門 #17 - 集合

  
言語処理100本ノック 2015の問題17に挑戦です。

■ 問題
hightemp.txtは,日本の最高気温の記録を「都道府県」「地点」「℃」「日」のタブ区切り形式で格納したファイルである.以下の処理を行うプログラムを作成し,hightemp.txtを入力ファイルとして実行せよ.さらに,同様の処理をUNIXコマンドでも実行し,プログラムの実行結果を確認せよ.

17. 1列目の文字列の異なり
1列目の文字列の種類(異なる文字列の集合)を求めよ.確認にはsort, uniqコマンドを用いよ.

■ Pythonのコード
def gatherPrefecture(filename):
    collection = set([])
    with open(filename, 'r', encoding='utf8') as fin:
        for line in fin:
            pref = line.split()[0]
            collection.add(pref)
    return collection
def main(): prefs = gatherPrefecture('hightemp.txt') for name in prefs: print(name)
if __name__ == '__main__': main()


■ 今回のトピック

問題6でやったように、集合を扱うには、set()関数を使います。
s = set([1 ,2, 3])

このプログラムでは、
collection = set([])
で空のSetを作成しています。

addメソッドで要素を追加します。重複は勝手に除去してくれるので便利です。
collection.add(item)
今回は、それだけかな。
 
 
■ 結果
群馬県
埼玉県
和歌山県
高知県
岐阜県
千葉県
愛媛県
山梨県
大阪府
愛知県
山形県
静岡県