2

私はプログラミングにまったく慣れていません。ご容赦ください。ループと変更の検出方法について質問があります。たとえば、私のリストは次のとおりです。

['09/2004', 297294186.0]
['09/2004', 257905788.0]
['09/2004', 768116019.0]
['09/2004', 458513425.0]
['08/2004', 251973518.0]
['08/2004', 265328010.0]
['08/2004', 330020350.0]
['08/2004', 383188410.0]
['08/2004', 487483400.0]
['08/2004', 800294431.0]
['08/2004', 999609680.0]
['08/2004', 1237831666.0]
['08/2004', 2242789646.0]

そして、私は毎月の平均を見つけたいと思います。私はそれを見つける方法を知っていますが、それを行うことを考えることができる唯一の方法は

for i in list:
 if month == '08'
    do average

    if month =='09'
    do average

    if month == '10'
    do average

大量のifコマンドを実行する代わりに、月が変更されたことを自動的に検出し、その月の平均を実行し、自動的に続行するループを実行する方法はありますか?

どんな助けでも大歓迎です

ウィリアム

4

3 に答える 3

4

月から辞書を作成できます。

from collections import defaultdict

months = defaultdict(list)

for date, number in data:
    month, year = date.split('/')

    months[month].append(number)

今、のようにmonths見え{'08': [1, 2, 3, ...], '09': [5, 6, 7, ...]}ます。そこから、平均を計算するのは非常に簡単です。

averages = {m: sum(months[m]) / len(months[m]) for m in months}
于 2012-12-23T11:42:42.013 に答える