Python 3.x 获取索引器错误:只有整数、片(`:`)、省略号(`…`)、numpy.newaxis(`None`)和整数或布尔数组是有效的索引

Python 3.x 获取索引器错误:只有整数、片(`:`)、省略号(`…`)、numpy.newaxis(`None`)和整数或布尔数组是有效的索引,python-3.x,index-error,Python 3.x,Index Error,当我运行这个函数时,我得到了这个索引错误。此函数用于查找城市zipcode的平均租金。我有一本城市词典,叫做city,其中zipcode是键,city name是值。有些城市有多个ZipCode,arrRent是一个数组,包含城市房屋的租金列表,我想找到平均租金 def meanPrice(self, city): total = 0 cityLoc = 0 for keys, cities in self.city.items(): if self.ci

当我运行这个函数时,我得到了这个索引错误。此函数用于查找城市zipcode的平均租金。我有一本城市词典,叫做city,其中zipcode是键,city name是值。有些城市有多个ZipCode,arrRent是一个数组,包含城市房屋的租金列表,我想找到平均租金

def meanPrice(self, city):
    total = 0
    cityLoc = 0
    for keys, cities in self.city.items():
        if self.city[keys] == city:
            for i in self.arrRent[cityLoc]:
                total += int(self.arrRent[cityLoc][i])
            mean = total / i
            print(total / i)
        else:
            cityLoc += 1
以下是字典的一个片段:

{'95129': 'San Jose'}
{'95128': 'San Jose'}
{'95054': 'Santa Clara'}
{'95051': 'Santa Clara'}
{'95050': 'Santa Clara'}
下面是数组的一个片段:

[['2659' '2623.5' '2749.5' '2826.5' '2775' '2795' '2810' '2845' '2827'
  '2847' '2854' '2897.5' '2905' '2925' '2902.5' '2869.5']

['3342.5' '3386' '3385' '3353' '3300' '3190' '3087.5' '3092' '3170'
  '3225' '3340' '3315' '3396' '3470' '3480' '3380']

['2996' '2989' '2953' '2950' '2884.5' '2829' '2785' '2908' '2850' '2761'
  '2997.5' '3020' '2952' '2997.5' '2952' '2923.5']

 ['2804.5' '2850.5' '2850' '2850' '2867' '2940' '2905' '2945' '2938'
  '2860' '2884' '2946' '2938' '2986.5' '2931.5' '3032.5']

 ['2800' '3074' '2950' '2850' '2850' '2875' '2757' '2716' '2738.5' '2696'
  '2809' '2891' '3000' '2960' '2950' '2831']]
我看到两个问题:

  • 您列表中的问题“租金”:它应该是一个包含租金的列表。但在您的列表中,不同的租金不是用逗号分隔的:
  • 您在代码中的问题似乎就在这段代码中。i是此处的实际租金,而不是指数:
  • 将其更改为:

    for i in self.arrRent[cityLoc]:
        total += int(i)
    
        for i in self.arrRent[cityLoc]:
            total += int(self.arrRent[cityLoc][i])
    
    for i in self.arrRent[cityLoc]:
        total += int(i)