В вашей раскадровке вы можете встроить ViewController в контроллер навигации, выбрав «Контроллер просмотра», а затем выбрав из меню вверху Editor->Embed In->Navigation Controller
. С другого контроллера просмотра вы управляете перетаскиванием на этот контроллер навигации для настройки modal
segue. Вы также можете управлять перетаскиванием на исходный контроллер просмотра, чтобы настроить его для него без навигационного контроллера.
[/g0]
Ваша первая проблема - получить счетчик, поэтому мы реструктурируем в новый словарь под названием out
:
out = {}
for month in bought:
for fruit in bought[month]:
out[fruit] = out.get(fruit, 0) + 1
Этот цикл for просто проходит все ключи (месяцы) в [ 113] и перебирает список, который находит там. Когда он читает фрукты в этом списке, он проверяет, есть ли этот фрукт в out
. Если нет, он инициализирует этот плод в out
как 0
. Наконец, он увеличивает значение на единицу.
Теперь нам нужно напечатать в нужном формате:
for k in out:
print("{}: {}".format(k, out[k]))
Форматирование строк в Python чрезвычайно зрелое. Вы можете узнать все виды трюков, например, на https://pyformat.info/ . Здесь мы просто вставляем ключ, а затем значение в строковый шаблон, итерацией по out
.
Я просто быстро бросил это вместе.
bought = {
"January": ['Apple', 'Banana', 'Orange', 'Kiwi', 'Raspberry'],
"February": ['Orange', 'Mango', 'Banana'],
"March": ['Apple', 'Starfruit', 'Apricot']
}
numbers = {}
allb = []
for month in bought:
allb += bought[month]
for item in allb:
if item in numbers:
numbers[item] += 1
else:
numbers[item] = 1
print(numbers) # Note you can format this however you want: just iterate through the dictionary again
Apple: 2, Banana: 2, Orange: 2, Kiwi: 1, Raspberry: 1, Mango: 1, Starfruit: 1, Apricot: 1
{'Apple': 2, 'Banana': 2, 'Orange': 2, 'Kiwi': 1, 'Raspberry': 1, 'Mango': 1, 'Starfruit': 1, 'Apricot': 1}
(Поскольку numbers
является словарем, вы можете сделать очень мощные вещи для поиска чисел. В этом случае он действует как таблица.)
Первый for
цикл проходит через все купленные ключи (как отформатировано, все месяцы) и ищет их значение. Затем эти значения добавляются в мой список allb
(все куплено). Далее я перебираю allb
и if
, что элемент уже в числах: я добавляю 1 к счету, в противном случае я устанавливаю счет в 1. [ 1113]
Вы можете использовать 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})
Использование встроенного счетчика. Один вкладыш: -)
from collections import Counter
bought = {
"January": ['Apple', 'Banana', 'Orange', 'Kiwi', 'Raspberry'],
"February": ['Orange', 'Mango', 'Banana'],
"March": ['Apple', 'Starfruit', 'Apricot']
}
count = Counter([y for x in bought.values() for y in x])
print(count)