我知道我可以迅速使用默认的字典值,但是我在为元组做这件事上很努力
即
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)
答案 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)]