1

データは次のとおりです:[( '1985-08'、 '15.00')、( '1985-08'、 '14 .88')、( '1985-08'、 '15 .25')、( '1985-08'、 '15 .25 ')、(' 1985-08'、' 15.13')、(' 1985-08'、' 14.75')、(' 1985-08'、' 14.88')、(' 1985-08'、' 15.25') 、( '1985-08'、 '15 .25')、( '1985-08'、 '15.00')、( '1985-08'、 '14 .63')、( '1985-08'、 '14 .50')、( '1985-08'、 '14.63')、( '1985-08'、 '15.25')、( '1985-08'、 '15.00')、( '1985-08'、 '15.25')、( '1985 -08'、' 15.13')、(' 1985-08'、' 14.88')、(' 1985-08'、' 15.25')、(' 1985-08'、' 15.38')、(' 1985-08 '、' 15.75')、(' 1985-08'、' 15.88')、('1985-07'、' 15.88')、(' 1985-07'、' 16.25')、(' 1985-07'、' 16.00')、(' 1985-07'、' 16.62')、(' 1985- 07'、' 16.62')、(' 1985-07'、' 16.25')、(' 1985-07'、' 16.50')、(' 1985-07'、' 16.87')、(' 1985-07 ' 、'17 .37')、(' 1985-07'、' 17.25')、(' 1985-07'、' 17.62')、(' 1985-07'、' 17.50')、(' 1985-07'、' 17.75')、(' 1985-07'、' 17.87')、(' 1985-07'、' 18.00')、(' 1985-07'、' 18.00')、(' 1985-07'、' 17.62 ' )、( '1985-07'、 '17 .62')、( '1985-07'、 '17 .62')、( '1985-07'、 '17 .50')、( '1985-07'、 '17 .25')、 ('1985-07'、 '18 .12')]('1985-07'、 '16.25')、( '1985-07'、 '16.00')、( '1985-07'、 '16.62')、( '1985-07'、 '16.62')、( ' 1985-07'、' 16.25')、(' 1985-07'、' 16.50')、(' 1985-07'、' 16.87')、(' 1985-07'、' 17.37')、(' 1985- 07'、' 17.25')、(' 1985-07'、' 17.62')、(' 1985-07'、' 17.50')、(' 1985-07'、' 17.75')、(' 1985-07 ' 、'17 .87')、(' 1985-07'、' 18.00')、(' 1985-07'、' 18.00')、(' 1985-07'、' 17.62')、(' 1985-07'、' 17.62')、(' 1985-07'、' 17.62')、(' 1985-07'、' 17.50')、(' 1985-07'、' 17.25')、(' 1985-07'、' 18.12 ' )]('1985-07'、 '16.25')、( '1985-07'、 '16.00')、( '1985-07'、 '16.62')、( '1985-07'、 '16.62')、( ' 1985-07'、' 16.25')、(' 1985-07'、' 16.50')、(' 1985-07'、' 16.87')、(' 1985-07'、' 17.37')、(' 1985- 07'、' 17.25')、(' 1985-07'、' 17.62')、(' 1985-07'、' 17.50')、(' 1985-07'、' 17.75')、(' 1985-07 ' 、'17 .87')、(' 1985-07'、' 18.00')、(' 1985-07'、' 18.00')、(' 1985-07'、' 17.62')、(' 1985-07'、' 17.62')、(' 1985-07'、' 17.62')、(' 1985-07'、' 17.50')、(' 1985-07'、' 17.25')、(' 1985-07'、' 18.12 ' )]16.00')、(' 1985-07'、' 16.62')、(' 1985-07'、' 16.62')、(' 1985-07'、' 16.25')、(' 1985-07'、' 16.50 ' )、( '1985-07'、 '16 .87')、( '1985-07'、 '17 .37')、( '1985-07'、 '17 .25')、( '1985-07'、 '17 .62')、 ('1985-07'、 '17 .50')、( '1985-07'、 '17.75')、( '1985-07'、 '17 .87')、( '1985-07'、 '18 .00')、( ' 1985-07'、' 18.00')、(' 1985-07'、' 17.62')、(' 1985-07'、' 17.62')、(' 1985-07'、' 17.62')、(' 1985- 07'、' 17.50')、(' 1985-07'、' 17.25')、(' 1985-07'、' 18.12')]16.00')、(' 1985-07'、' 16.62')、(' 1985-07'、' 16.62')、(' 1985-07'、' 16.25')、(' 1985-07'、' 16.50 ' )、( '1985-07'、 '16 .87')、( '1985-07'、 '17 .37')、( '1985-07'、 '17 .25')、( '1985-07'、 '17 .62')、 ('1985-07'、 '17 .50')、( '1985-07'、 '17.75')、( '1985-07'、 '17 .87')、( '1985-07'、 '18 .00')、( ' 1985-07'、' 18.00')、(' 1985-07'、' 17.62')、(' 1985-07'、' 17.62')、(' 1985-07'、' 17.62')、(' 1985- 07'、' 17.50')、(' 1985-07'、' 17.25')、(' 1985-07'、' 18.12')]('1985-07'、 '16 .50')、( '1985-07'、 '16.87')、( '1985-07'、 '17 .37')、( '1985-07'、 '17 .25')、( ' 1985-07'、' 17.62')、(' 1985-07'、' 17.50')、(' 1985-07'、' 17.75')、(' 1985-07'、' 17.87')、(' 1985- 07'、' 18.00')、(' 1985-07'、' 18.00')、(' 1985-07'、' 17.62')、(' 1985-07'、' 17.62')、(' 1985-07 ' 、'17 .62')、(' 1985-07'、' 17.50')、(' 1985-07'、' 17.25')、(' 1985-07'、' 18.12')]('1985-07'、 '16 .50')、( '1985-07'、 '16.87')、( '1985-07'、 '17 .37')、( '1985-07'、 '17 .25')、( ' 1985-07'、' 17.62')、(' 1985-07'、' 17.50')、(' 1985-07'、' 17.75')、(' 1985-07'、' 17.87')、(' 1985- 07'、' 18.00')、(' 1985-07'、' 18.00')、(' 1985-07'、' 17.62')、(' 1985-07'、' 17.62')、(' 1985-07 ' 、'17 .62')、(' 1985-07'、' 17.50')、(' 1985-07'、' 17.25')、(' 1985-07'、' 18.12')]17.75')、(' 1985-07'、' 17.87')、(' 1985-07'、' 18.00')、(' 1985-07'、' 18.00')、(' 1985-07'、' 17.62 ' )、( '1985-07'、 '17 .62')、( '1985-07'、 '17 .62')、( '1985-07'、 '17 .50')、( '1985-07'、 '17 .25')、 ('1985-07'、 '18 .12')]17.75')、(' 1985-07'、' 17.87')、(' 1985-07'、' 18.00')、(' 1985-07'、' 18.00')、(' 1985-07'、' 17.62 ' )、( '1985-07'、 '17 .62')、( '1985-07'、 '17 .62')、( '1985-07'、 '17 .50')、( '1985-07'、 '17 .25')、 ('1985-07'、 '18 .12')]

私のコード:

def average_data(list_of_tuples):
strMonth = []
counter = 0
addition = 0
while True:
    if (strMonth[counter])[0] == (strMonth[counter+1])[0]:    #line 31
        addition += float(strMonth[counter][1])
        result2 = addition
    else:
        continue
print(result2)
return result2
def main(): 
    file_obj = get_input_descriptor()
    column = int(input('What column:'))
    get_data_list(file_obj, column)
    result2 =get_data_list(file_obj, column)

average_data(result2)
file_obj.close()
main()

Pythonシェルのエラーコード:

  File "C:\Users\admin\Desktop\proj.py", line 31, in average_data
if (strMonth[counter])[0] == (strMonth[counter+1])[0]:
IndexError: list index out of range

何が悪いの?毎月の数の合計を取得したい。この問題を解決する他の方法はありますか?

4

2 に答える 2

2

strMonth空です。0番目の要素がないため、 :を発生さstrMonth[counter]せます。IndexError

In [29]: strMonth = []

In [30]: counter = 0

In [31]: strMonth[counter]
IndexError: list index out of range

dict(またはcollections.defaultdict )を使用して、yearmonth文字列を値の合計を表すfloatにマップできます。

import collections
def average_data(strMonth):
    result = collections.defaultdict(float)
    for yearmonth, val in strMonth:
        result[yearmonth] += float(val)
    return dict(result)

def main(): 
    result2 = [('1985-08', '15.00'), ('1985-08', '14.88'), ('1985-08', '15.25'), ('1985-08', '15.25'), ('1985-08', '15.13'), ('1985-08', '14.75'), ('1985-08', '14.88'), ('1985-08', '15.25'), ('1985-08', '15.25'), ('1985-08', '15.00'), ('1985-08', '14.63'), ('1985-08', '14.50'), ('1985-08', '14.63'), ('1985-08', '15.25'), ('1985-08', '15.00'), ('1985-08', '15.25'), ('1985-08', '15.13'), ('1985-08', '14.88'), ('1985-08', '15.25'), ('1985-08', '15.38'), ('1985-08', '15.75'), ('1985-08', '15.88'), ('1985-07', '15.88'), ('1985-07', '16.25'), ('1985-07', '16.00'), ('1985-07', '16.62'), ('1985-07', '16.62'), ('1985-07', '16.25'), ('1985-07', '16.50'), ('1985-07', '16.87'), ('1985-07', '17.37'), ('1985-07', '17.25'), ('1985-07', '17.62'), ('1985-07', '17.50'), ('1985-07', '17.75'), ('1985-07', '17.87'), ('1985-07', '18.00'), ('1985-07', '18.00'), ('1985-07', '17.62'), ('1985-07', '17.62'), ('1985-07', '17.62'), ('1985-07', '17.50'), ('1985-07', '17.25'), ('1985-07', '18.12')]
    print(average_data(result2))
main()

収量

{'1985-07': 378.08000000000004, '1985-08': 332.16999999999996}
于 2013-02-26T01:39:19.043 に答える
0

Python 3.2

  M=List_of_tuples

  sum(int(m.split("-")[1]) for m,t in M)
于 2013-02-26T02:39:15.770 に答える