gpt4 book ai didi

swift - 在 Swift 的字典中过滤嵌套列表

转载 作者:搜寻专家 更新时间:2023-10-31 08:27:59 24 4
gpt4 key购买 nike

我在 Swift 中有一个对象,它是 Dictionary<String, String[]> 类型的字典。 .我希望能够过滤 String[]数组同时保持字典结构。

let list: Dictionary<String, String[]> = [
"Vegetables" : [ "Carrot", "Potato" ],
"Fruit" : [ "Apple", "Orange", "Banana" ]
]

我希望能够过滤所有包含“O”的内容,并最终得到如下所示的内容:

[
"Vegetables" : [ "Carrot", "Potato" ],
"Fruit" : [ "Orange" ]
]

为了过滤数组,我一直在这样做:

["Carrot", "Potato"].filter { ($0 as NSString).containsString("o") }

但是,我现在正在努力解决的部分是在字典上进行映射 - 因为这样我就可以保留键并在值上调用该过滤器函数。我该怎么做呢?提前致谢!

最佳答案

您可以在 for in 循环中执行此操作:

for (key, array) in list {
list[key] = array.filter { ($0 as NSString).containsString("o") }
}

你也可以将自己的map方法添加到Dictionary:

extension Dictionary {
func map(f: (KeyType, ValueType) -> ValueType) -> [KeyType:ValueType] {
var ret = [KeyType:ValueType]()
for (key, value) in self {
ret[key] = f(key, value)
}
return ret
}
}

然后你可以简单地做:

var filteredList = list.map { $1.filter { ($0 as NSString).containsString("o") } }

注意:我在Dictionary 上实现map 返回字典的副本,更像map Array

的方法

关于swift - 在 Swift 的字典中过滤嵌套列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24098983/

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