[英]Swift - How can I add an expand a nested dictionary?
我想將en條目添加到這種Array / Tuple / Dictionary data
:
var i=0
var data = [("foo", ["first": 1, "second": 2]), ("bar", ["first": 1, "second": 2])]
var newData = [(Int, [String: AnyObject])]()
for (key, value) in data {
newData.append((i, value))
i = i+1
}
for循環正在將元組的“鍵”(即AnyObject)更改為Int。 我希望元組也將關鍵字作為字典。
[("foo", ["first": 1, "second": 2]),
("bar", ["first": 1, "second": 2])]
變成
[(1, ["first": 1, "second": 2]),
(2, ["first": 1, "second": 2])]
我想要的是:
[(1, ["first": 1, "second": 2, "key": "foo"]),
(2, ["first": 1, "second": 2, "key": "bar"])]
從...開始
let data: [(String, [String: AnyObject])] = [
("foo", ["first": 1, "second": 2]),
("bar", ["first": 1, "second": 2])]
這是一種變體,不需要單獨的計數變量
let newData = data.map({ (var e) -> [String: AnyObject] in
e.1.updateValue(e.0, forKey: "key")
return e.1
}).enumerate().map({ ($0.0 + 1, $0.1) })
enumerate
調用也可以移到最前面,這使得塊簽名的緊湊性降低了一點。
let newData = data.enumerate().map { (var e) -> ((Int, [String: AnyObject])) in
e.1.1.updateValue(e.1.0 , forKey: "key")
return (e.0 + 1, e.1.1)
}
兩種變體都導致
[(1, ["first": 1, "second": 2, "key": "foo"]),
(2, ["first": 1, "second": 2, "key": "bar"])]
嘗試這個
var data = [("foo", ["first": 1, "second": 2]), ("bar", ["first": 1, "second": 2])]
var i = 0
var newData = [(Int, [String: AnyObject])]()
for (key, value) in data {
var newValue : [String:AnyObject] = value
newValue["key"] = key
newData.append((++i, newValue))
}
print(newData)
或使用Swift map
功能
var i = 0
let newData = data.map { (key, value) -> (Int, [String: AnyObject]) in
var newValue = value
newValue["key"] = key
return (++i, newValue)
}
print(newData)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.