Вы можете использовать Counter
:
from collections import Counter
from itertools import chain
from pprint import pprint
c = Counter(chain.from_iterable(bought.values()))
pprint(c)
Выход:
Counter({'Apple': 2,
'Banana': 2,
'Orange': 2,
'Kiwi': 1,
'Raspberry': 1,
'Mango': 1,
'Starfruit': 1,
'Apricot': 1})
Я думаю, что все наоборот: включение отсечения ухудшает производительность, потому что оно должно настраивать маску отсечения. Я смутно помню, как где-то читал это, но сейчас не могу найти.