LoginSignup
18
16

More than 3 years have passed since last update.

【Swift】2つの配列から辞書を作る

Last updated at Posted at 2015-08-24

これまで(〜Swift3)


let romanStrs = ["M", "D", "C", "L", "X", "V", "I"]
let romanNums = [1000, 500, 100, 50, 10, 5, 1]

let strToNum = zip(romanStrs, romanNums).reduce([String: Int]()) { (dic, t) in
    var dic = dic
    dic[t.1] = t.0
    return dic
}

print(strToNum)
// ["X": 10, "V": 5, "D": 500, "C": 100, "L": 50, "I": 1, "M": 1000]

varがポイント。

これから(Swift4〜)


let romanStrs = ["M", "D", "C", "L", "X", "V", "I"]
let romanNums = [1000, 500, 100, 50, 10, 5, 1]

let strToNum = zip(romanStrs, romanNums).reduce(into: [String: Int]()) { $0[$1.0] = $1.1 }
print(strToNum)
// ["X": 10, "V": 5, "D": 500, "C": 100, "L": 50, "I": 1, "M": 1000]

5行が1行になりました。

追記

@koher さんからのコメントを記事にも追記します。

let romanStrs = ["M", "D", "C", "L", "X", "V", "I"]
let romanNums = [1000, 500, 100, 50, 10, 5, 1]

let strToNum = Dictionary(uniqueKeysWithValues: zip(romanStrs, romanNums))
print(strToNum)
// ["M": 1000, "I": 1, "X": 10, "D": 500, "C": 100, "L": 50, "V": 5]

参考

18
16
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
16