2

私は辞書を使用して CSV ファイルからデータをグループ化しています。たとえば、最初と 2 番目の列は dict キーで、値は列 3,4 のタプルのリストになります。

私のコードスニペットは次のとおりです。

import csv
import collections
csvDicData_ = dict()

fh = open('myfile.csv', 'rt')
reader = csv.reader(fh, delimiter=';', skipinitialspace=True)
for indx, row in enumerate(reader):
    if row:
        #-- put in a dictionary form: #csvDicData_[(row[0],row[1])] = (row[2],row[3])
        key   = (row[0],row[1])
        value = (row[2],row[3])
        #-- I'd like to use the row below (commented) insted of the next two, I expect the same result... 
        #csvDicData_.setdefault(key,[value]).append(value)

        if (not key in csvDicData_): csvDicData_[key] = [value]
        else: csvDicData_[key].append(value)

上記のコードは正しい結果を生成しますが、使用しようとしましたがcsvDicData_.setdefault(key,[value]).append(value)、何らかの理由で理解できませんでしたlen(csvDicData_[('field1x','field2x')] )).

この動作の理由 (各キーの CSV ファイルの最初の行のように、タプル (0,0) がディクショナリ/キーに自動的に追加されます。

4

2 に答える 2