Swift——配列を辞書に変換する方法 (キーは配列要素、値は添え字のシリアル番号です)

場合によっては、配列の添え字と要素を辞書に変換する必要があります。たとえば、配列要素を使用して添字を検索する場合、関数を使用して添字を検索する場合は、計算パフォーマンスとメモリ要件の両方の観点から、毎回ループで検索して取得する必要があります。元の配列を辞書に変換し、キーの値を配列の要素にし、その値を添え字のシリアル番号にすることで、要素の値でシリアル番号を簡単に検索できるようにする方が便利です。毎回ループ検索を行う必要はありません。

配列を辞書に変換するには、配列の各要素とそれに対応する添え字のシリアル番号を順番に取得する必要があります。もちろん、添え字の通し番号はForループ内でi受け渡ししi=0て取得するので、Forループを利用してもこの機能は実現できます。i += 1ただし、Swift には C スタイルの For ループがありません。Swift で使用される For-In ループを直接使用して要素の添字番号を取得することはできません。Swift の文字列列挙関数を使用するか、 While ループを使用する必要がありますString.enumerate()

次の 2 つの方法が個別に紹介されており、使用される配列は次のとおりです。

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

困っている方のお役に立てれば幸いです~

おすすめ

転載: blog.csdn.net/qq_33919450/article/details/130299814