1

例えば:

{datetime.date(2000, 1, 15): [1],
 datetime.date(2000, 1, 14): [5],
 datetime.date(2000, 1, 3): [4],
 datetime.date(2005, 1, 10): [2],
 datetime.date(2005, 1, 16): [4],
 datetime.date(2005, 1, 5): [2]}

だけに:

{(2000, 1): [10], (2005,1): [8]}

基本的に日を省略し、値を追加します。を削除する方法がわかりませんdatetime.date

4

2 に答える 2

3

"一発ギャグ:

newdict = {
    (key.year, key.month): sum(
        v[0] for k, v in olddict.iteritems()
        if (key.year, key.month) == (k.year, k.month)
    )
    for key in olddict
}
>>> newdict
{(2000, 1): 10, (2005, 1): 8}

これは、0605002 の回答よりも少し効率が悪いかもしれません。


または、より従来のソリューション:

from collections import defaultdict

newdict = defaultdict(lambda: [0])
for key in olddict:
    newdict[(key.year, key.month)][0] += olddict[key][0]
于 2012-11-17T09:41:50.787 に答える
0

単純:

for key in olddict:
    if (key.year, key.month) in newdict:
        newdict[(key.year, key.month)][0] += olddict[key][0]
    else:
        newdict[(key.year, key.month)] = [olddict[key][0]]

datetimeオブジェクトの詳細については、 python docsを参照してください。

于 2012-11-17T09:35:50.050 に答える