Swift: cómo convertir una matriz en un diccionario (la clave es el elemento de la matriz y el valor es el número de serie del subíndice)

A veces es necesario convertir los subíndices y elementos de la matriz en un diccionario. Por ejemplo, si usa un elemento de matriz para encontrar un subíndice, si usa una función para encontrarlo, debe buscarlo y obtenerlo en un bucle cada vez, tanto en términos de rendimiento informático como de requisitos de memoria. convertir la matriz original en un diccionario, la clave Es más conveniente que el valor sea un elemento de matriz, y el valor es un número de serie subíndice, de modo que el número de serie se pueda buscar fácilmente por el valor del elemento, y allí no es necesario realizar una búsqueda de bucle cada vez.

Para convertir una matriz en un diccionario, debe obtener cada elemento de la matriz y su número de serie de subíndice correspondiente a su vez. Por supuesto, esta función también se puede realizar usando un bucle For, porque el número de serie del subíndice se obtiene pasando iy i=0obteniendo i += 1en el bucle For. Sin embargo, Swift no tiene un bucle For de estilo C. El bucle For-In que usa Swift no se puede usar directamente para obtener el número de subíndice de un elemento. Debe usar la función de enumeración de cadenas de Swift o usar un bucle While String.enumerate().

Los siguientes dos métodos se presentan por separado, y las matrices utilizadas son las siguientes:

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

Método usando el bucle For-In:

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

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

Formas de usar un ciclo while:

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

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

La salida de ambos es:

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

De esta forma, podemos obtener fácilmente el número de serie de un elemento, como por ejemplo el cnúmero de serie de un personaje:

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

Espero ayudar a los necesitados ~

Supongo que te gusta

Origin blog.csdn.net/qq_33919450/article/details/130299814
Recomendado
Clasificación