【问题标题】:TypeError: list indices must be integers or slices, not str (Python)TypeError:列表索引必须是整数或切片,而不是 str (Python)
【发布时间】:2020-11-21 21:41:08
【问题描述】:

我正在编写一个程序,它读取未指定数量的整数并找到出现次数最多的整数。例如,如果您输入 2 3 40 3 5 4 –3 3 3 2 0,则数字 3 出现的频率最高。在一行中输入所有数字。如果出现次数最多的不是一个数字而是几个数字,则应报告所有数字。例如,由于 9 和 3 在列表 9 30 3 9 3 2 4 中出现了两次,因此应该报告这两个出现。

def main():
    numbers= input("Enter the numbers: ").strip().split()

    dict_numbers = []

    for number in numbers:
        if number in dict_numbers:
            dict_numbers[number] += 1
        else:
            dict_numbers[number] = 1

    most_occurrence = max(dict_numbers.values())

    print("Most Occurrence:",end=" ")

    for number, occurrence in dict_numbers.items():
        if(most_occurrence == occurrence):
            print(number, end=" ")
main()

我不断收到以下错误:

Enter the numbers: 1 2 4 6 6
Traceback (most recent call last):
  File "/Users/eriksaini/Desktop/Python/M09/Assignments/countLetters.py", line 20, in <module>
    main()
  File "/Users/eriksaini/Desktop/Python/M09/Assignments/countLetters.py", line 10, in main
    dict_numbers[number] = 1
TypeError: list indices must be integers or slices, not str
>>> 

【问题讨论】:

标签: python list typeerror


【解决方案1】:

你使用了[],它表示一个列表

如果您要定义字典,则必须使用 {}

所以这将是你的最终代码:

def main():
    numbers= input("Enter the numbers: ").strip().split()

    dict_numbers = {}

    for number in numbers:
        if number in dict_numbers:
            dict_numbers[number] += 1
        else:
            dict_numbers[number] = 1

    most_occurrence = max(dict_numbers.values())

    print("Most Occurrence:",end=" ")

    for number, occurrence in dict_numbers.items():
        if(most_occurrence == occurrence):
            print(number, end=" ")
main()

【讨论】:

    【解决方案2】:

    dict_numbers = [] 是一个列表。使用dict_numbers = {}

    【讨论】:

      猜你喜欢
      • 2020-05-14
      • 2017-10-08
      • 2015-12-09
      • 2021-11-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多