如何使用Swift将一本词典附加到另一本词典?
我正在使用AlamoFire
库将JSON
发送到REST服务器
。
词典1
var dict1: [String: AnyObject] = [
kFacebook: [
kToken: token
]
]
词典2
var dict2: [String: AnyObject] = [
kRequest: [
kTargetUserId: userId
]
]
如何组合这两个词典以生成一个新词典,如下所示?
let parameters: [String: AnyObject] = [
kFacebook: [
kToken: token
],
kRequest: [
kTargetUserId: userId
]
]
我尝试了dict1=dict2,但出现了编译错误:
二进制运算符“=”不能应用于两个“[字符串:AnyObject]”操作数
对于Swift
对于Swift
Swift 4有一个新功能:<代码>让参数=dict1。在r[e.0]=e.1}中减少(到:dict2){(r,e)}
挖掘标准库非常重要:map
,reduce
,dropFirst
,forEach
等都是简洁代码的主要组成部分。功能位很有趣!
var d1 = ["a": "b"]
var d2 = ["c": "e"]
extension Dictionary {
mutating func merge(dict: [Key: Value]){
for (k, v) in dict {
updateValue(v, forKey: k)
}
}
}
d1.merge(d2)
参考令人敬畏的美元
我喜欢这种方法:
<代码>DICROM。forEach{(key,value)in dicTo[key]=value}
Swift 4和5
使用Swift 4,Apple引入了一种更好的方法来合并两个字典:
let dictionary = ["a": 1, "b": 2]
let newKeyValues = ["a": 3, "b": 4]
let keepingCurrent = dictionary.merging(newKeyValues) { (current, _) in current }
// ["b": 2, "a": 1]
let replacingCurrent = dictionary.merging(newKeyValues) { (_, new) in new }
// ["b": 4, "a": 3]
您在这里有两个选项(与在容器上操作的大多数函数一样):
问题内容: 因为不接受运算符,有没有一种快速比较两个字典的简便方法? 通过比较两个字典,我的意思是检查它们是否具有相同的精确键,并且对于每个键都具有相同的值。 问题答案: 正如Hot Licks所述,您可以使用NSDictionary方法isEqualToDictionary()来检查它们是否相等,如下所示: 您还可以实现自定义运算符“ ==”,如下所示: Xcode 9•Swift 4 从文档开
问题内容: 我有两个数组。 我需要合并这些数组,并在下拉列表中显示为 我怎么能使用swift.im新手来快速获得此结果,有人可以帮忙吗? 问题答案: 压缩数组并连接结果:
问题内容: 我有两个长度相同的清单: 和 我想在我有的地方创建字典 最好的方法是什么? 问题答案: dict(zip([1,2,3,4], [a,b,c,d])) 如果列表很大,则应使用。 如果键的数量多于值,并且您想为额外的键填写值,则可以使用。 这里,,,和是变量-它会正常工作(只要它们被定义),但你可能是指,如果你希望他们为字符串。 从每个可迭代对象中获取第一个项目,并生成一个元组,然后从每
问题内容: 如何使用将一个附加到另一个? 我正在使用图书馆发送到。 字典1 字典2 如何将两个字典结合在一起,制作一个新字典,如下所示? 我已经尝试过,但是出现了编译错误: 二进制运算符’+ =’不能应用于两个’[String:AnyObject]’操作数 问题答案: 请参阅很棒的Dollar&Cent项目 https://github.com/ankurp/Cent/blob/master/So
问题内容: 我有两个Python字典,我想编写一个返回这两个字典合并的单个表达式。该方法将是我需要的,如果它返回了结果而不是就地修改。 我怎样才能在最终的合并字典,不是? (更清楚地说,我正在寻找的最后一个胜出的冲突处理方法也是如此。) 问题答案: 对于字典和,变成了浅层合并的字典,带有替换的值。 在Python 3.5或更高版本中: 在Python 2(或3.4或更低版本)中,编写一个函数: 现
我有一个字典数组,它是这样设置的: 如果我打印tableViewData,它如下所示: 我想让它看起来像这样: