Hatena::Grouppython

nelnal@python

2008-02-13

[] ファイル入出力時にエンコードを指定する 18:25  ファイル入出力時にエンコードを指定する - nelnal@python を含むブックマーク はてなブックマーク -  ファイル入出力時にエンコードを指定する - nelnal@python

組み込みの open 関数ではなく、codecs の open 関数を使う必要がある。


以下は Shift JIS で出力する場合

import codecs

file = codecs.open( "test.txt", "w", "shift_jis" )
file.write( u"test!! テスト!\n" )
参照
Python ライブラリリファレンス codecs

[] ディクショナリのキーにリストを割り当てる 16:40  ディクショナリのキーにリストを割り当てる - nelnal@python を含むブックマーク はてなブックマーク -  ディクショナリのキーにリストを割り当てる - nelnal@python

参照
Python Cookbook

今までは以下の様に書いていた

d1 = {}
for key, value in datas:
    if d1.has_key( key ):
        d1[ key ].append( value )
    else:
        d1[ key ] = [ value ]

しかし、何度も同じことを書くうちに

いくらなんでもこれは簡単に書けるだろと思ったらやっぱりあった。


setdefaultってこう使うのね。

d1 = {}
for key, value in datas:
    d1.setdefault( key, [] ).append( value )

[] イテレータ 15:07  イテレータ - nelnal@python を含むブックマーク はてなブックマーク -  イテレータ - nelnal@python

イテレータの書き方ってどうして書籍*1には書いてないのかな・・・?


とりあえず良いイテレーションのコード例ではないと思うが書いておく。

class TestIter:
    def next():
        if self.index >= len( self.lst ):
            raise StopIteration
        else:
            return self.lst[ self.index ] * 3

    def __init__( self, lst ):
        assert lst

        self.lst = lst
        self.index = 0

    def __iter__( self ):
        return self

for n in TestIter( [ 1, 2, 3 ] ): print n
for m in TestIter( [ 'a', 'b', 'c' ] ): print m
参照
再帰とジェネレータ

*1:みんなのPythonPythonクイックリファレンスPythonクックブック

MinnieMinnie2011/07/28 00:01Many many qutaliy points there.