イテレータをやっぱり分かってなかった話

先日から何度か書いていたコード(昨日も)に次のような記述をしていたのですが、基本中の基本の間違いをおかしていました(^_^;)

下のように書いてたのですが

def jsonwriter(tFileName, tDict, digitize=True):
    """write tDict to tFile as json
       if digitize=True, digitizable values will be done.
    """
    
    tFile = codecs.open(tFileName, "w", "utf-8")
    
    tFile.write(u"[\n") #先頭の[
    
    outerComFlg = u"" #2行目以降に改行とコンマを書き込むフラグ
    
    for line, dummy in enumerate(tDict):             #※ここのところ
        tFile.write(outerComFlg + u" {")
        
        outerComFlg = u",\n"
        
        comFlg = u"" #行内の2要素目以降の先頭にコンマを書き込むフラグ
        
        for i, v in tDict[line].iteritems():
            if not(digitize and bool(re.compile("^\d+(\.\d+)?\Z").match(v))):
                v = '\"' + v + '\"'
            
            tStr = comFlg + u'\"' + i + u'\":' + v
            
            tFile.write(tStr)
            
            comFlg = u","
        
        tFile.write(u"}")
    
    tFile.write(u"\n]")
    
    tFile.close()

※印の箇所でenumerateを使っているんですがその前の変数名がdummyです。なぜdummyにしたかといえばその後のコード内で使わないからです。自分でも「使わない変数を定義しなきゃいけないなんてenumerate使いにくいわ」と思いつつ、その4行下で

tDict[line]

のようにtDictというリスト(tDictなのに辞書じゃなくて辞書のリスト・・・名前の付け方もおかしいですね汗)のlineというインデックスを使っています。ところが"tDict[line]"は"dummy"が指しているものそのものなんですよね。つまりここはそもそもenumerate()を使うべき場所じゃなかったです。下のように書くべきでした。

def jsonwriter(tFileName, tDict, digitize=True):
    """write tDict to tFile as json
       if digitize=True, digitizable values will be done.
    """
    
    tFile = codecs.open(tFileName, "w", "utf-8")
    
    tFile.write(u"[\n") #先頭の[
    
    outerComFlg = u"" #2行目以降に改行とコンマを書き込むフラグ
    
    for line in tDict:                    #そもそもenumerate()を使う必要がない
        tFile.write(outerComFlg + u" {")
        
        outerComFlg = u",\n"
        
        comFlg = u"" #行内の2要素目以降の先頭にコンマを書き込むフラグ
        
        for i, v in line.iteritems():
            if not(digitize and bool(re.compile("^\d+(\.\d+)?\Z").match(v))):
                v = '\"' + v + '\"'
            
            tStr = comFlg + u'\"' + i + u'\":' + v
            
            tFile.write(tStr)
            
            comFlg = u","
        
        tFile.write(u"}")
    
    tFile.write(u"\n]")
    
    tFile.close()

for文については理解していたつもりだったのに基本的ミスでした。