gpt4 book ai didi

arrays - Swift 3.0 删除字典数组中的重复项

转载 作者:行者123 更新时间:2023-12-02 04:02:04 24 4
gpt4 key购买 nike

我正在努力删除 swift 3.0 中字典数组中的重复字典

下面是

let Dict1 : [String : String] = ["messageTo":"Madhu"]
let Dict2 : [String : String] = ["messageTo":"Kiran"]
let Dict3 : [String : String] = ["messageTo":"Raju"]

var arrOfDict = [[String:String]]()
arrOfDict.append(Dict1)
arrOfDict.append(Dict2)
arrOfDict.append(Dict1)
arrOfDict.append(Dict3)
arrOfDict.append(Dict2
print(arrOfDict)

//prints [["messageTo": "Madhu"], ["messageTo": "Kiran"], ["messageTo": "Madhu"], ["messageTo": "Raju"], ["messageTo": "Kiran"]]

如您所见,arrOfDict 中有 2 个重复的字典。

任何人都可以帮我使用Set或任何其他方法过滤重复项

最佳答案

字典不符合Hashable(或Equatable),因此在这种情况下使用Set不是一个可用的方法。然而,对于 KeyValue 类型为 Equatable 的字典,我们可以轻松访问 == 运算符对字典数组执行唯一性过滤:

public func ==<Key : Equatable, Value : Equatable>(
lhs: [Key : Value], rhs: [Key : Value]) -> Bool

例如如下 (O(n^2))

arrOfDict = arrOfDict.enumerated()
.filter { (idx, dict) in !arrOfDict[0..<idx].contains(where: {$0 == dict}) }
.map { $1 }

print(arrOfDict)
// [["messageTo": "Madhu"], ["messageTo": "Kiran"], ["messageTo": "Raju"]]

// or ...
arrOfDict = arrOfDict.enumerated()
.flatMap { (idx, dict) in !arrOfDict[0..<idx].contains(where: {$0 == dict}) ? dict : nil }

关于arrays - Swift 3.0 删除字典数组中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41381075/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com