Значение словаря по умолчанию в Swift - PullRequest
0 голосов
/ 27 марта 2019

Я знаю, что у меня может быть значение словаря по умолчанию в swift, но я изо всех сил пытаюсь сделать это для кортежа

т.е.

var freq = [Int:(Int,Int,Int)]()

Я хочу сделать значение по умолчанию

freq[num.element, default: (0, num.offset, num.offset) ] = (7, 0, 0 )

Это создает таблицу частот с 7,0,0 для каждого значения, когда ключ не существует.

Могу ли я использовать значение по умолчанию для более сложного словаря?

Например, если у нас есть массив чисел [1,2,2,3,3,3], мы можем подсчитать количество элементов, используя таблицу частот

var freq = [Int:Int]()
for num in nums {
    freq[num, default: 0] += 1
}

Мы хотим сохранить начальнуюпозиция каждого числа и конечная позиция каждого числа в таблице частот, поэтому используйте

var freq = [Int:(Int,Int,Int)]()
    for num in nums.enumerated() {
        if freq[num.element] == nil {
            freq[num.element] = (1,num.offset, num.offset)
        } else {
            freq[num.element] = (freq[num.element]!.0 + 1, freq[num.element]!.1, num.offset)
        }
    }

. Для этого кода я хочу использовать значение по умолчанию.

Я ищу способиспользования значения по умолчанию в списке частот, содержащем более одного значения.Не имеет значения, что я использую кортеж, а не массив значений, например, я хочу выяснить, как использовать default с кортежем, используя массивы.

Я попытался использовать приведенный выше пример, чтобызначение по умолчанию, и при тестировании это не работает.Я посмотрел на предыдущие вопросы, поиск Google и посмотрел на документацию Apple.

Вопрос: Как использовать значение по умолчанию для словаря var freq = Int: (Int, Int, Int)

1 Ответ

0 голосов
/ 27 марта 2019

Это то, что вы ищете?Просто получите текущее значение со значением по умолчанию и сохраните его в переменной, чтобы облегчить жизнь.

var freq = [Int:(Int,Int,Int)]()

var nums = [1,2,2,3,3,3]
for num in nums.enumerated()
{
    let currentTuple = freq[num.element, default: (0,num.offset,num.offset)]
    freq[num.element] = (currentTuple.0 + 1, currentTuple.1,num.offset)
}
print(freq) //output: [1: (1, 0, 0), 2: (2, 1, 2), 3: (3, 3, 5)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...