Swift 我需要创建带有命名索引的数组并在其中搜索
我需要使用以下信息创建一个数组: 水果:计数(“苹果”:“14”,“橘子”:“3”,“葡萄”:“6”,…) 然后搜索它,看看我们是否有任何(水果)索引?如果没有添加1个数量,如果存在,则在其(计数)中添加1Swift 我需要创建带有命名索引的数组并在其中搜索,swift,swift3,Swift,Swift3,我需要使用以下信息创建一个数组: 水果:计数(“苹果”:“14”,“橘子”:“3”,“葡萄”:“6”,…) 然后搜索它,看看我们是否有任何(水果)索引?如果没有添加1个数量,如果存在,则在其(计数)中添加1 var fruits:[String:Int] = ["apple":14,"orange":3,"grape":6] let filtered = fruits.filter({$0.key.elementsEqual("apple")}) fruits["apple"] = (fruit
var fruits:[String:Int] = ["apple":14,"orange":3,"grape":6]
let filtered = fruits.filter({$0.key.elementsEqual("apple")})
fruits["apple"] = (fruits["apple"] ?? 0) + 1
print(fruits["apple"])
在第一行中,您创建了一个键和值的字典。
在第二行中,您使用所需的键过滤字典,在本例中,apple
您甚至可以将此键设置为变量,并用变量替换apple
。作为过滤器的返回,您将获得一个带有提供键的过滤值数组。现在只需检查其计数是否大于0,这意味着提供的键存在一个值。如果它在那里,则按其他值递增,然后使用键创建一个新值
var fruitCount : [String : Int] = ["apple" : 14, "orange" : 3, "grape" : 6];
func addFruit( FruitName name : String ) {
for (fruitName , count) in fruitCount {
if ( fruitName == name ) {
fruitCount[name]! += 1 // fruitCount[name] return optional(Int) so, unwrap force!
return
}
}
fruitCount[name] = 1
}
addFruit(FruitName: "apple")
addFruit(FruitName: "kiwi")
print(fruitCount)
我们可以看到
[“橙色”:3,“苹果”:15,“葡萄”:6,“猕猴桃”:1]
过滤的有什么意义?字典可以有键,也可以没有键,可以通过其他方式进行检查。实际上,带过滤的和if
的6行可以是水果[“apple”]=(水果[“apple”?-0)+1
。迭代字典
查找键的值是超冗余的。只需使用字典下标并检查结果是否为nil,而不是使用O(N)
进行迭代,您将得到O(log(N))
在哈希表中进行搜索。