作者: Atsuo Ishimoto
日時: 2002/8/15(16:44)
石本です。

On Thu, 15 Aug 2002 15:32:17 +0900
藤岡和夫 <kazuf@...> wrote:

>  Perlなら、
> 
> u_data{goods} .= "\t" . uriage{goods}
> 
> のように簡単に書ける変数にデータを追加する部分に一時的に記憶させる配列
> bufferを使っているのですが、他に良い方法はないでしょうか。

u_data[goods] = u_data.get(goods, '') + '\t' + uriage[goods]
かな?

ついでに、最近のPythonではこんな風にも書ける、という例として(多分)同じ
結果になる(と思う)スクリプトを書いてみました。ご参考までに。

# もうちょっと便利で分かりにくい機能もありますが、そっちは省略(^^;

goodss = ['goods1', 'goods2', 'goods3']
files = ['2002-04.txt', '2002-05.txt']
uriage = {}

files.sort()
for name in files:
    # 当月のデータの初期値(0)をセット
    for goods in goodss:
        p = uriage.setdefault(goods, [])
        p.append('0')

    for line in open(name):
        goods, num = line.split()
        # 当月のデータを更新
        uriage[goods][-1] = num

goodss.sort()
for goods in goodss:
    print "%s\t%s" % (goods, "\t".join(uriage[goods]))

--------------------------
Atsuo Ishimoto
ishimoto@...
Homepage:http://www.gembook.jp