Skip to main content

配列から Dictionary に

重複が無いことが保証されてるなら

swift
let dictUnique = Dictionary(uniqueKeysWithValues: books.map { ($0.title, $0) })

重複あり得るなら

swift
// 後勝ち
let dictLastWins = Dictionary(books.map { ($0.title, $0) }, uniquingKeysWith: { _, new in new })

// 先勝ち
let dictFirstWins = Dictionary(books.map { ($0.title, $0) }, uniquingKeysWith: { first, _ in first })

for で回しても良いんだけど、こっちのほうが速い(試したデータだと半分ぐらい)

ちなみに配列にする場合(重複したら複数入る)

swift
let dictGrouped = Dictionary(grouping: books, by: \.title)