Swift——如何将数组映射成字典(关键字为数组元素,值为下标序号)

有时候需要将数组的下标和元素转换成字典。比如说使用数组元素来查找下标,如果使用一个函数来查找,那每次都得进行循环查找和获取,不论是计算性能还是内存需求都大,这时候将原数组转换成一个字典,关键字为数组元素,值为下标序号会更方便一些,这样就可以很轻松的通过元素的值来查找序号了,也就不用每次都进行循环查找。

要将数组转换为字典需要依次获取数组每个元素和其对应的下标序号。当然用一个 For 循环也可以实现这个功能,因为下标序号是用 For 循环里的i通过i=0i += 1获取到的。但是 Swift 并没有 C 风格的 For 循环,Swift 使用的 For-In 循环并不能很直接的使用获取元素下标序号,需要使用 Swift 的字符串枚举函数String.enumerate(),或者使用 While 循环也可以做到。

下面分别介绍一下两种方法,使用的数组如下:

let str = ["a", "b", "c"]

使用 For-In 循环的方法:

//声明初始化一个空白字典,关键字为字符串,值为整数
var dist = [String: Int]()

// str.enumerated() 可以同时获取 str的index和value,这两个值的名称可以自己定义,这里为了说明所以写成index和value
for (index, value) in str.enumerated() {
    dist[value] = index
}

使用 While 循环的方法:

//声明初始化一个空白字典,关键字为字符串,值为整数
var dist = [String: Int]()

var i = 0
while (i < str.count) {
    dist[str[i]] = i
    i += 1
}

二者的输出皆为:

["c": 2, "b": 1, "a": 0]

这样我们就可以很方便地获取某个元素的序号,比如获取字符c的序号:

//这里使用感叹号是因为这个值不一定存在于字典,或者说原数组中,直接等于的话,得到的是可选值‘Optional’类型,使用感叹号强制为一定有,当然你可以使用问好‘?’来添加如果没有返回什么值
print(dist["c"]!)
2

希望能帮到有需要的人~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值