Как просуммировать значения в 2 словарях Swift
Даны два словаря, объедините их в один с названием tables. Если в обоих словарях будет один и тот же ключ, суммируйте значения.
let table1 = ["box": 3, "lamp": 1, "pen": 2]
let table2 = ["box": 2, "PC": 1, "pen": 3]
Ответы (2 шт):
Итак, у нас дано два словаря (цифры подставил разнообразнее и побольше, чтобы проверить ответы):
let table1 = ["box": 4, "lamp": 2, "mac": 50, "apple": 12, "pen": 8]
let table2 = ["PC": 3, "pen": 22, "apple": 6, "box": 10, "phone": 5]
Первое задание сделал так (просто добавляем ключ-значение второго словаря в первый, если их ещё в нём нет):
let tables = table1.merging(table2) { (_, new) in new }
print(tables.keys)
//На консоль выйдет ["mac", "box", "pen", "lamp", "phone", "PC", "apple"]
//Здесь стоит иметь ввиду, что со значениями (цифрами) никаких операций не
производится!
Вторая задача, логика и решение такие:
Создаём первый цикл, в котором узнаём ключ и значение из первого словаря
Создаём второй цикл, в котором узнаём ключ и значение из второго словаря
Сравниваем ключи. Если они равны, то складываем значения по этим ключам
for (keyOne, valueOne) in table1 { for (keyTwo, valueTwo) in table2 { if keyOne == keyTwo { let sum = valueOne + valueTwo print(sum) //На консоль выйдут 14, 18, 30 } } }
Задача может быть решена с помощью метода merging, его замыкание выполняет сложение, если ключи в словарях дублируются
let table1 = ["box": 3, "lamp": 1, "pen": 2]
let table2 = ["box": 2, "PC": 1, "pen": 3]
var tables = table1.merging(table2) { v1, v2 in v1 + v2 }
print(tables)