せめて課題を単純化して試すぐらいの事はご自分でやりましょう。
swift
1struct Item {
2 /// 地域コード
3 var code: Int
4 /// 都道府県名
5 var city: String
6 /// 首都
7 var capital: String
8}
9
10let items = [
11 Item(code: 1, city: "東京都", capital: "東京23区"),
12 Item(code: 1, city: "千葉県", capital: "千葉市"),
13 Item(code: 1, city: "神奈川県", capital: "横浜市"),
14 Item(code: 2, city: "群馬県", capital: "前橋市"),
15 Item(code: 2, city: "栃木県", capital: "宇都宮市"),
16]
17
18let result = items.reduce(into: [Int: [Item]]()) {
19 if $0[$1.code] == nil {
20 $0[$1.code] = []
21 }
22 $0[$1.code]?.append($1)
23}
24
25print(result)
出力結果:
text
1[1: [Test000.Item(code: 1, city: "東京都", capital: "東京23区"), Test000.Item(code: 1, city: "千葉県", capital: "千葉市"), Test000.Item(code: 1, city: "神奈川県", capital: "横浜市")], 2: [Test000.Item(code: 2, city: "群馬県", capital: "前橋市"), Test000.Item(code: 2, city: "栃木県", capital: "宇都宮市")]]
itemsが配列([Item]
型)で、resultがcodeをキーとした辞書型に変換したものです([Int: [Item]]
型)。
上手い人ならもう少し短く書けるかもしれません。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/17 07:24
2019/10/17 07:47