たとえば、私がこの配列を持っているとしましょう:
let dates = ["01/02/16", "02/02/16", "03/02/16", "01/02/16", "02/02/16"]
私がやりたいのは、各String
日付をキーとして辞書に保存し、繰り返されるキーごとに、そのインデックスを配列として保存し、重複するキーに関連付けることです。
たとえば01/02/16
、インデックス0
とで発生します3
。02/02/16
インデックス1
とで発生します4
。
私はこのような辞書を持っているのが好きです:
[ "01/02/16": [0, 3], "02/02/16": [2, 4], "03/02/16": [1] ]
私はこのような重複エントリがいくつあるかを追跡する方法を知っています:
let dates = ["01/02/16", "01/02/16", "02/02/16", "03/02/16"]
var dateCounts:[String:Int] = [:]
for date in dates
{
dateCounts[date] = (dateCounts[date] ?? 0) + 1
}
for (key, value) in dateCounts
{
print("\(key) occurs \(value) time/s")
}
ただし、重複するインデックスを追跡する方法がわかりませんか?
これで試してください
import UIKit
class ViewController: UIViewController {
var duplicatedDict : [String:[Int]] = [:]
let dates = ["01/02/16", "01/02/16", "02/02/16", "03/02/16"]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
for (index,dateString) in dates.enumerated() {
if(duplicatedDict[dateString] == nil){
duplicatedDict[dateString] = [index]
}else{
duplicatedDict[dateString]?.append(index)
}
}
debugPrint(duplicatedDict)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
コンソールログ出力
["02/02/16":[2]、 "01/02/16":[0、1]、 "03/02/16":[3]]
お役に立てれば
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加