Есть ли способ создать словарь по умолчанию для подсчета символов / строк / чего угодно? В Python есть удобный класс Counter (), но я не могу найти для Swift ничего такого, что могло бы просто создать экземпляр чего угодно, похожего на Array (повтор: 0, count: x). Я понимаю, что могу сделать свой собственный. Я спрашиваю, есть ли уже что-то подобное в Foundation ... потому что я не могу найти это. Спасибо!
Обновление
Вот два ближайших ответа, из приведенных ниже:
через @ матовый
let s = "abracadabra"
let letters = s.map {String($0)}
var countedLetters = [String:Int]()
letters.forEach {countedLetters[$0, default:0] += 1}
countedLetters // ["b": 2, "a": 5, "r": 2, "d": 1, "c": 1]
и другие:
let letters: [Character] = ["a", "b", "c"]
let countedLetters: [Character: Int] = Dictionary(uniqueKeysWithValues: zip(letters, repeatElement(1, count: letters.count)))
print(countedLetters)
Я просто надеялся, что на вершине всего этого будет абстракция, похожая на Python Counter ().
Очевидно, его не существует. Слава Богу за расширения:)
Старый пример вопроса
Например:
let letters = ["a", "b", "c"]
let countedLetters: [Character: Int] = Dictionary(default: 1, forKeys: letters)
print(countedLetters)
// "a": 1
// "b": 1
// "c": 1