亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python 錯誤:TypeError:列表索引必須是整數或切片,而不是 str

Python 錯誤:TypeError:列表索引必須是整數或切片,而不是 str

人到中年有點甜 2023-07-11 15:11:27
我在這一行收到此錯誤:valor_mensal_aux[i] = int(data['Dados'][0][json_date][0]['valor'])我嘗試在這里發布一些代碼,以便你們可以獲得所有變量的上下文:if len(imobs) == 0:   year_codes = ["2011", "2012", "2013", "2014", "2015", "2016", "2017", "2018", "2019", "2020"]   month_codes = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"]   city_codes = ["1111609", "1120303", "11A1312", "11D1714", "11E0402", "16D0105", "16E0603", "16F1009", "16G1823",                 "16H0502", "16J0907", "1701106", "1701512", "1840205", "1851416", "1861214", "1870705", "1500805"]   valor_mensal_aux = [0]   valor_anual = [0][0]   # valor_anual_ano_inicial = [18] # array com valor anual de cada cidade para ano inicial   # valor_anual_ano_final = [18] # array com valor anual de cada cidade para ano final   for city_code in city_codes:       for year_code in year_codes:           for month_code in month_codes:               url_imob = Request(                   "https://www.ine.pt/ine/json_indicador/pindica.jsp?op=2&varcd=0010042&Dim1=S3A" + year_code + \                   month_code + "&Dim2=" + city_code + "&Dim3=T&lang=PT", headers={'User-Agent': 'XYZ/3.0'})               json_date = year_code + month_code               response = urlopen(url_imob)               data = json.loads(response.read())               i = 0               while i < 12:                   valor_mensal_aux[i] = int(data['Dados'][0][json_date][0]['valor'])                   i += 1           valor_anual[data['geodsg']][year_code] = statistics.mean(valor_mensal_aux)           python_imob = Imob(year_code, valor_anual[city_code][year_code], data['DataUltimoAtualizacao'],                              data['Dados'][json_date]['geodsg'])           session.add(python_imob)             session.commit()           session.close()           imobs = session.query(Imob).all() 我可以改變什么來解決它?我希望這行代碼之后不再有錯誤:)
查看完整描述

1 回答

?
慕神8447489

TA貢獻1780條經驗 獲得超1個贊

我嘗試訪問相關網頁,從 JSON 響應加載的典型對象如下所示:


[{'Dados': {'201101': [{'dim_3': 'T',

                        'dim_3_t': 'Total',

                        'geocod': '1111609',

                        'geodsg': 'Viana do Castelo',

                        'valor': '779'}]},

  'DataExtracao': '2020-09-03T14:21:27.691+01:00',

  'DataUltimoAtualizacao': '2020-08-27',

  'IndicadorCod': '0010042',

  'IndicadorDsg': 'Valor mediano de avalia??o bancária (€/ m2) por Localiza??o '

                  'geográfica (Município - 2013) e Tipo de constru??o; Mensal '

                  '- INE, Inquérito à avalia??o bancária na habita??o',

  'MetaInfUrl': 'https://www.ine.pt/bddXplorer/htdocs/minfo.jsp?var_cd=0010042&lingua=PT',

  'UltimoPref': 'Julho de 2020'}]

這意味著您需要像這樣訪問它:


data[0]['Dados'][json_date][0]['valor']

相反,你有:


data['Dados'][0][json_date][0]['valor']

您還會遇到嘗試分配列表末尾以外的問題。你可能想要這樣的東西:


       for year_code in year_codes:

           valor_mensal_aux = []

           for month_code in month_codes:

                ......

                valor_mensal_aux.append(int(data[0]['Dados'][json_date][0]['valor']))

并且不要i在月份循環內循環 - 每個月只附加一次。


查看完整回答
反對 回復 2023-07-11
  • 1 回答
  • 0 關注
  • 152 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號