Swift中的默认字典值

时间:2019-03-27 01:31:36

标签: 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)
        }
    }

对于此代码,我想使用默认值。

我正在寻找一种在频率列表中使用默认值的方法,该默认值中不仅包含单个值。我使用元组而不是值数组是不相关的,例如,我想了解如何将默认值与使用数组的元组一起使用。

我尝试使用上面的示例作为默认值,并且在测试时不起作用。我看过以前的问题,一个Google搜索,也看过Apple的文档。

问题:如何在字典中使用默认值var freq = Int:(Int,Int,Int)

1 个答案:

答案 0 :(得分:0)

这是您要寻找的吗?只需获取具有默认值的当前值,然后先将其存储在变量中,即可简化工作。

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)]