2011年7月18日月曜日

開発環境

  • Mac OS X Snow Leopard (OS)
  • WingIDE
  • Script言語: Python

『初めてのコンピュータサイエンス』(Jennifer Campbell, Paul Gries, Jason Montojo, Greg Wilson 著、長尾 高弘 訳、オライリー・ジャパン、2010年、ISBN978-4-87311-463-7)の9章(集合と辞書), 9.5(練習問題), 13を解いてみる。

 

13.

コード

import sys

# Count all the birds.
def count_birds():
    count = {}
    for filename in sys.argv[1:]:
        infile = open(filename, 'r')
        for line in infile:
            name = line.strip()
            count[name] = count.get(name, 0) + 1
        infile.close()
    return count

# Invert the dictionary.
def invert_dic(d):
    freq = {}
    for (name, times) in d.items():
        if times in freq:
            freq[times].append(name)
        else:
            freq[times] = [name]
    return freq
# Print.
def print_dic(d):
    for key in sorted(d):
        print key
        for name in d[key]:
            print ' ', name
            
print_dic(invert_dic(count_birds()))

入出力結果(Python Shell)

問題のコードのそれぞれを関数にして、それを合成関数にしただけだけど、これでいいのかな~最後の1行の合成関数を見れば、何をしてるかは少しはわかりやすくなった気がするけど。とりあえずPython ShellでEvaluatingできたからコード自体には問題ないと思うので次に進むことに!

0 コメント:

コメントを投稿