Swiftのコレクションから辞書を構築するためにSwift reduce
を使用しようとしています。 私は、次の変数があります。私は全然見てみたい私は_squares
Swiftでreduceを使用して辞書を作成する
- :私は次のようにint型
_units
辞書を埋めたいvar _squares : [String] = [] var _unitlist : [[String]] = [] var _units = [String: [[String]]]()
をリストは
_unitlist
であり、要素を含むものだけをフィルタリングします。 - すべての要素をキーとして持つリストを作成し、そのような要素を含むリストのリスト値として。
例を挙げてください。我々が持っている場合:
squares = ["A"]
unitlist = [["A", "B", "C"], ["A", "C"], ["B", "C", "F"]]
を期待出力は、キーと値として[["A", "B", "C"], ["A", "C"]]
として辞書ディ「A」である必要があります。その後、私は濾過し、私はreduce
を使用しようと、私は反復するために二回flatMap
を使用
_units = _squares.flatMap { s in
_unitlist.flatMap { $0 }.filter {$0.contains(s)}
.reduce([String: [[String]]]()){ (dict, list) in
dict.updateValue(l, forKey: s)
return dict
}
}
:
は、私はこのような何かを試してみました。
しかし、このコードでは、私は次のエラーに直面しています:Cannot assign value of type '[(key: String, value: [[String]])]' to type '[String : [[String]]]'
それは私にはあまり知られていません。
ニースとエレガントなソリューション:ここ遊び場です!もう少し詳しいことを教えていただけますか? –
@ジョヴァンニグラノもちろん、私の答えには何を凝縮したいですか? –
Swiftはタイプを推論する言語です 'reduce(into:[:])' –