ネストされたリストのすべての番号がグループ化されているgroupBy機能を実装しようとしています。これまでの私のコード:Swiftのキーによるグループ辞書
struct MyClass {
var numbers: [Int]
...
}
var dict: [String : MyClass] = ...
let numbers = dict
.filter{ $0.0.containsString(searchString) }
.flatMap{ $0.1.numbers }
これは私Int
秒のArray
を生成します。しかし、私はそれぞれのユニークな数とその出現の数で辞書[Int:Int]を持っていたいと思います。だから、例えば:
[1,2,3,4,1,2,2,1]
は次のようになります。
[1 : 2, 2 : 3, 3 : 1, 4 : 1]
私はgroupBy
オペレータがあります知っているが、スウィフトは1を持っていないようです。私はreduce
で試してみた:
func reducer(accumulator: [Int: Int], num: Int) -> [Int : Int] {
var acc = accumulator
acc[num]! += 1
return acc
}
filtered.reduce([:], combine: reducer)
しかし、私はそれを実行したいときにクラッシュします。理由は分かりませんが、EXC_BAD_INSTRUCTIONが表示されます。
ご協力いただきありがとうございます。
UPSは、ええ、辞書を意味しました。 – SamW
コードをコピーして貼り付けることができれば助かります。 – ryantxr
コピーして貼り付けたらどういう意味ですか? – SamW