我试图通过比较另一个字典中的键来改变一个字典中的值。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我试图通过比较另一个字典中的键来改变一个字典中的值。相关的知识,希望对你有一定的参考价值。
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]
所以我需要将explanationActionParameters的值与clariQuestion的键匹配,然后当键匹配时,将explanationActionParameters中的数字2替换为 "what are my largest transactions"。令我感到困难的是,explanationActionParameter中的值是类型2,而clariQuestion中的键是类型String。我不知道该如何解决这个问题。
答案
你可以将你的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)
以上是关于我试图通过比较另一个字典中的键来改变一个字典中的值。的主要内容,如果未能解决你的问题,请参考以下文章