【问题标题】:i'm trying to change the value in one dictionary by comparing the key from another dictionary我试图通过比较另一个字典中的键来更改一个字典中的值
【发布时间】:2020-09-16 06:31:00
【问题描述】:
var clariQuestion: [String: String] = ["0": "What are my last 10 transactions",
                                    "1": "What are my spending transactions",
                                    "2": "What are my largest trasactions",
                                    "3": "What are my pending tracnstions"]

var explanationActionParameters: [String: Any] = ["clariQuestion": 2]

所以我需要将 explainActionParameters 的值与 clariQuestion 的键匹配,然后当键匹配时,将 explainActionParameters 中的数字 2 替换为“我最大的交易是什么”。让我感到困难的是,explainActionParameter 中的值是 2 类型,而 clariQuestion 中的键是 String 类型。不知道该怎么做。

【问题讨论】:

  • "让我感到困难的是,explainActionParameter 中的值是类型 2,而 clariQuestion 中的键是 String 类型"那么,你为什么要这样做?这是你的代码;配置它,以便根据需要匹配类型。
  • 酷!如果您有解决方案,请将其作为答案提供。

标签: ios swift dictionary functional-programming


【解决方案1】:

您可以将 int 转换为字符串,使用 String(2) 或将字符串转换为 int,例如 Int("2") 我对您的回答是将您的 clariQuestion 字典转换为数组,因为键是整数,而数组可以看作是键是整数的字典。所以,你可以这样做

var clariQuestion: [String] = ["What are my last 10 transactions",
                                "What are my spending transactions",
                                "What are my largest trasactions",
                                "What are my pending tracnstions"]
var explanationActionParameters: [String: Any] = ["clariQuestion": 2]

let questionIndex = explanationActionParameters["clariQuestion"]
let question = clariQuestion[questionIndex]

如果你坚持维护这个字典结构,你可以flatmap你的字典并将所有键从字符串转换为int,像这样

clariQuestion.flatMap { (key, value) in [Int(key) : value] }

或将所有值转换为字符串,像这样

explanationActionParameters.flatMap { (key, value) in [key : String(value)] }

无论哪种方式,现在您应该能够访问这些字典中的元素。我将创建一个函数来演示如何

func replace(_ clariQuestion: [String : String], _ explanationActionParameters: [String: Any]) -> [String: String] {
    // The dictionary that will be returned containing the mapping from clariQuestion to explanationActionParameters
    var ret = [String : String]()
    let mappedClariQuestion = clariQuestion.flatMap { (key, value) in [Int(key) : value] }
    for (key, value) in clariQuestion {
        ret[key] = mappedClariQuestion[value]
    }

    return ret
}

那么,就explanationActionParameters = replace(clariQuestion, explanationActionParameters)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    相关资源
    最近更新 更多