首页 > 解决方案 > 为什么我收到类型错误:列表索引必须是整数或切片,而不是 str,同时调用函数并传递字典

问题描述

我在数据科学中找到了立足点,我遇到了一个问题,我正在创建一个函数,为假设的移动订阅公司执行一些计算

我创建了一个字典,如下所示:

mobile_sub = {'minutes_used': 200,
              'minutes_included': 200,
              'texts_used': 200,
              'texts_included': 200,
              'monthly_plan': 10,
              'cost_per_minute': 0.03,
              'cost_per_sms': 0.001,
              'vat_tax': 0.14}

然后是计算函数:

def evaluateCharges(input_data=[]):
    minutes_used = input_data['minutes_used']
    texts_used = input_data['texts_used']
   
    # Performing different actions based on the conditions indicated in the question.
    if minutes_used > 200:
        aditional_minutes = minutes_used-minutes_included
        basecharge = monthly_plan + (aditional_minutes * 0.03)
        
    if texts_used > 200 :
        aditional_texts = texts_used - texts_included
        basecharge = monthly_plan + (aditional_texts * 0.001)
        
    VAT_TAX = basecharge * vat_tax
    basecharge += VAT_TAX
    

    # We can choose to format our basecharg  2dp
    finalCharges =  round(basecharge, 2) 

    # We then create a string with 
    output_string = "Dear Customer, below are the charges on your account : \n Minutes Used: ' +  str(minutes_used) + '\n Texts Used: ' + str(texts_used) + '\n Additional Minutes: ' + str(aditional_minutes) + '\n Additional Texts: ' + str(aditional_texts) + '\n Basecharge: $' + str(basecharge) + '\n Tax Applied: 14% \n Total Charges: $' +  str(taxApplied)"

    # the returning our output string
    return print(output_string)

然后调用我们的函数并传递我们的字典

evaluateCharges(input_data=[ 250, 185])

这是我得到错误的地方:TypeError:列表索引必须是整数或切片,而不是str,我该如何避免它?

TypeError                                 Traceback (most recent call last)
<ipython-input-25-a618d565246b> in <module>()
     36 # Then calling our function and passing our dictionary
     37 
---> 38 evaluateCharges(input_data=[ 250, 185])

<ipython-input-25-a618d565246b> in evaluateCharges(input_data)
      7     based on the values received.
      8     '''
----> 9     minutes_used = input_data['minutes_used']
     10     texts_used = input_data['texts_used']
     11 

TypeError: list indices must be integers or slices, not str

标签: python

解决方案


输入数据应该是一张地图,但您传入的是 [250, 185]。然后,当你用 索引它时minutes_used = input_data['minutes_used'],它告诉你不能用字符串索引它。


推荐阅读