TypeError: индексы списка должны быть целыми числами или срезами, а не str (Python) - PullRequest
0 голосов
/ 01 августа 2020

Я пишу программу, которая читает неопределенное количество целых чисел и находит те, у которых больше всего вхождений. Например, если вы введете 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
>>> 

Ответы [ 2 ]

0 голосов
/ 01 августа 2020

Вы использовали [], что означает список

, если вы определяете словарь, вы должны использовать {}

, так что это будет ваш окончательный код:

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()
0 голосов
/ 01 августа 2020

dict_numbers = [] - это список. Используйте dict_numbers = {}

...