Быстрый доступ к внутреннему ключу и значению из словаря [String: [String: Any]] - PullRequest
0 голосов
/ 30 декабря 2018

У меня есть следующий словарь:

var Dict: [String:[String:Any]] = [:]

Я знаю, что могу получить доступ к внешним клавишам, выполнив:

var keys = Array(Dict.keys)

Но я хотел бы знать, как я могу получить доступ квнутренние ключи и значения?

Ответы [ 3 ]

0 голосов
/ 31 декабря 2018

Вы можете отобразить значения словаря и инициализировать новый массив из ключей или значений:

let dict: [String:[String:Any]] = ["a":["key1": "value1", "key2": "value2"]]


let keys = Array(dict.values.map{Array($0.keys)}.joined())
let values = Array(dict.values.map{Array($0.values)}.joined())

print(keys)  // ["key1", "key2"]
print(values)  // ["value1", "value2"]
0 голосов
/ 31 декабря 2018

Пожалуйста, смотрите код ниже, чтобы получить все внутренние ключи и значения

var popularDestArr = [String:[String : Any]]()
popularDestArr = [
        "1abc":["image":"best_of_ott_001", "title":"dubaiHotelsStr","subtitle":"(243 Hotels)"],
        "2def":["image":"best_of_ott_002", "title":"parisHotelsStr","subtitle":"(434 Hotels)"],
        "3ghi":["image":"best_of_ott_003", "title":"istanbulHotelsStr","subtitle":"(151 Hotels)"]
    ]
    //print((popularDestArr as NSDictionary).allKeys)
    //print(((popularDestArr as NSDictionary).allValues[0]) as! NSDictionary)


    for arr in  popularDestArr{
        let dict: [String : Any] = arr.value
        //print(dict)
        for (key,value) in dict{
            print(key)
            print(value)
        }
    }
0 голосов
/ 30 декабря 2018

Вы можете использовать mapValue

let innerKeys = Dict.mapValues({$0.keys}).values
let innerValues = Dict.mapValues({$0.values}).values

Другой способ, если вы хотите получить к ним доступ в цикле

Dict.forEach( {
    //$0 is the outer key
    print($1.keys) //inner keys
    print($1.values) //inner values
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...