私は辞書を使用して 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) がディクショナリ/キーに自動的に追加されます。