1

以下のデータ形式があります。これは、名前をキーとし、週番号のリストを値とする辞書です。

{'Mali': [17, 16, 23, 18, 17, 16, 17, 18, 16],
 'Gooki': [7, 8, 8, 15, 7, 7, 8],
 'Piata': [85],     
 'Goerge': [82],
 'Samoo': [106, 55],
 'Marria: [101,39]}

週番号の間の週数をカウントし、辞書の値を週番号ではなく週数で変更したいと思います。これは、たとえば「Samoo」という名前で、55 週目と 106 週目があることを意味します。私のコードのように、これらの 2 週間とその間の週 (52 週間に等しい) をカウントし、それをディクショナリの値として設定します。

以下のコードがありますが、これを上記のようにカウントするかどうかはわかりません。

datedict = defaultdict(set)
with open('d:/info.csv', 'r') as csvfile:
    filereader = csv.reader(csvfile, 'excel')

    #passing the header
    read_header = False
    start_date=date(year=2009,month=1,day=1)
    #print((seen_date - start_date).days)
    tdict = {}
    for row in filereader: 
        if not read_header:
            read_header = True
            continue

# reading the rest rows
        name,firstseen = row[0],row[3]
        try:
            seen_date = datetime.datetime.strptime(firstseen, '%d/%m/%Y').date()               
            deltadays = (seen_date-start_date).days
            deltaweeks = deltadays/7 + 1
            key = name
            currentvalue = tdict.get(key, set())
            currentvalue.add(deltaweeks)
            tdict[key] = currentvalue

        except ValueError:
            print('Date value error')
            pass

pprint.pprint(tdict)

誰でもこれで私を助けることができますか?

4

1 に答える 1