Как я могу сделать так, чтобы мой словарь был проиндексирован с помощью функции в Python 3.x - PullRequest
0 голосов
/ 05 октября 2019

Я пытаюсь создать программу, которая узнает, сколько целых чисел в списке не является целым числом, которое больше всего представлено в этом списке. Для этого у меня есть команда, которая создает словарь с каждым значением в списке и количеством представлений в нем. Затем я пытаюсь создать новый список со всеми элементами из старого списка, за исключением наиболее представленного значения, чтобы я мог посчитать длину списка. Проблема в том, что я не могу получить доступ к наиболее представляемому значению в словаре, так как получаю код ошибки.

import operator
import collections

a = [7, 155, 12, 155]
dictionary = collections.Counter(a).items()
b = []
for i in a:
    if a != dictionary[max(iter(dictionary), key=operator.itemgetter(1))[0]]:
        b.append(a)

Я получаю этот код ошибки: TypeError: объект dict_items не поддерживает индексирование

1 Ответ

1 голос
/ 05 октября 2019

Переменная, которую вы назвали dictionary, это не dict, а dict_items.

>>> type(dictionary)
<class 'dict_items'>
>>> help(dict.items)
items(...)
    D.items() -> a set-like object providing a view on D's items

и наборы являются итеративными, не индексируемыми:

for di in dictionary: print(di)  # is ok
dictionary[0]                    # triggers the error you saw

Обратите внимание, что Counter очень богат, возможно, использование Counter.most_common подойдет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...