【发布时间】:2019-08-17 12:09:23
【问题描述】:
我知道我可以在 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)
【问题讨论】:
-
默认值(
(0, num.offset, num.offset))永远不会在您问题的代码中使用。换句话说:您问题中的代码可以写成freq[num.element] = (7, 0, 0)。 -
这是一个频率表。所以遍历一个String并计算每个元素的数量。无论是否使用,默认不设置。
-
请显示计算频率的其余代码。目前,如果没有周围的上下文,我很难理解你在问什么。
-
这里有很大的问题,因为最低要求已经明确规定了。我给出了一个扩展的例子,但经常在 Stack Overflow 上这样做会指责“家庭作业”(不是)或回答与所问问题无关的不同问题(使用一组值,而不是元组!等。 )。这完全是关于在 Swift 中使用字典的默认值。
-
在编辑问题以包含其他信息后,更容易理解您的要求以及您想要实现的目标。
标签: swift