Я пытаюсь заставить свой класс работать, но я могу добавить только 2 элемента, и я не могу добавить повторяющийся элемент.
Я также пытался использовать циклы for, но я тоже не могу заставить это работать.
Список слов для добавления:
words = Bag()
words.add('once')
words.add('twice')
words.add('twice')
Мой код:
class Bag:
def __init__(self):
"""Create a new empty bag."""
self.bag = dict()
def add(self, item):
"""Add one copy of item to the bag. Multiple copies are allowed."""
if not item in self.bag:
self.bag[item] = 1
else:
self.bag[item] += 1
print(self.bag)
Ваш код отлично работает для меня. Вы получаете ошибку? Каков ваш ожидаемый и фактический результат?
for x in self.bag.values(): print(x)спасибо за ваши ответы, мой код работает до такой степени, что я не могу заставить свой код дважды добавить «дважды» в мой словарь, показывает только 2 записи, а не 3 элемента






Вы хотите, чтобы результаты выглядели как {'once': 1, 'twice': 2, 'twice': 3}.
Это невозможно, вы не можете иметь один и тот же ключ несколько раз в словаре. Но вы можете получить структуру, подобную [{'once': 1}, {'twice': 2}, {'twice': 3}], с помощью этого кода:
from collections import defaultdict
class Bag:
def __init__(self):
"""Create a new empty bag."""
self.index = 0
self.bag = []
def add(self, item):
"""Add one copy of item to the bag. Multiple copies are allowed."""
self.index += 1
self.bag.append({item: self.index})
спасибо за ваши ответы, мой код работает до такой степени, что я не могу заставить свой код дважды добавлять «дважды» в мой словарь, показывает только 2 записи, а не 3 элемента
Как должен выглядеть правильный результат? Разве {'once': 1, 'twice': 2} не правильно?
правильный результат должен выглядеть так {'один раз': 1, 'дважды': 2, 'дважды': 3}
Я отредактировал свой ответ. Вы не можете получить то, что хотите, но вы можете иметь что-то похожее.
Гений! Спасибо! Теперь я понимаю, где я ошибся!
Но... ваш код работает.