当前位置: 首页 > 面试题库 >

Swift:筛选器字典

云远
2023-03-14
问题内容

我试图迅速过滤字典:

var data: [String: String] = [:]
data = data.filter { $0.1 == "Test" }

上面的过滤器代码在swift 2下编译,但产生以下错误:

无法将类型[[(String,String)]’的值分配给类型’[String:String]’的值

这是swift编译器中的错误,还是不是快速过滤字典的正确方法?

提前非常感谢您!


问题答案:

此问题已在Swift 4中修复

let data = ["a": 0, "b": 42]
let filtered = data.filter { $0.value > 10 }
print(filtered) // ["b": 42]

在Swift 4中,过滤后的字典返回字典。

Swift 2和3的原始答案

问题是那data是一个字典,但结果filter是一个数组,因此错误消息说您不能将后者的结果分配给前者。

您可以为结果数组创建一个新的变量/常量

let data: [String: String] = [:]
let filtered = data.filter { $0.1 == "Test" }

filtered是一个元组数组:[(String, String)]

过滤后,可以根据需要重新创建新词典:

var newData = [String:String]()
for result in filtered {
    newData[result.0] = result.1
}

如果您决定不使用filter它,则可以更改原始词典或其副本:

var data = ["a":"Test", "b":"nope"]
for (key, value) in data {
    if value != "Test" {
        data.removeValueForKey(key)
    }
}
print(data) // ["a": "Test"]

注意:在Swift
3中,removeValueForKey已重命名removeValue(forKey:),因此在此示例中为data.removeValue(forKey: key)



 类似资料:
  • 有什么建议吗?

  • 筛选器。 Usage 全部引入 import { Picker } from 'beeshell'; 按需引入 import Picker from 'beeshell/dist/components/Picker'; Examples Code import { Picker } from 'beeshell'; <Picker ref={(c) => { this._pick

  • 我有一个形式的字典: 我想过滤列表,以删除索引中的每一项,其中索引中的不是 输出应如下所示: 因为的第一个值不是 我试过这样的方法: 但这只适用于一把钥匙。 回复:下面有很多好的解决方案。我只是在想另一个。 将这个列表结构转换成一个元组列表: 然后我只需要通过每个元组的第二个项目来过滤这个列表,这很容易:

  • 主要内容:创建条件筛选器在Tableau中,条件过滤器用于将某些条件应用于现有过滤器。这些条件非常简单,例如,仅查找高于特定金额的销售额。此外,这些条件可用于创建范围过滤器。 创建条件筛选器 例如,假设有一个Sample-superstore数据源,在销售额超过200万的所有细分市场中找到产品的子类别。在Tableau中创建条件筛选器有以下一些步骤。 第1步: 将Segment字段和Sales字段拖到列工具架。 第2步:

  • 我看不到任何关于何时应该使用查询或过滤器或两者结合的描述。他们之间有什么区别?谁能解释一下吗?

  • 我是elasticsearch的新手,所以我的问题是: 提前致谢:)