You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Values[String: Any]字典的值创建新字典以获取location值

解决方案:将嵌套字典转换为直接映射location的字典

这事儿其实挺简单的,用 Swift 自带的mapValues方法就能轻松搞定——它专门用来处理这种「保留原字典的key,只转换对应value」的场景,完美匹配你的需求!

完整代码示例

// 你的原始字典(修正了原JSON的语法问题,location键需要加引号)
let originalDict: [String: Any] = [
    "SKzSjdBuOpO49wkPVaxtmLQoR0O2": ["location": "-LB1fn5GQKTaIc-fGNPS"],
    "s0ntSZP7mBQw1a8ua0E5PqazlqJ2": ["location": "-LB23izD7bp2NhO0UuIo"],
    "FEScjelpNSR7vuVz1ha6Z6uSfF43": ["location": "-LB1JLABuJO1NyJ-v2t_"],
    "mW7dGja6cRRB0d9uSIhg4f35PzC3": ["location": "-LB5xqUvIjEgtW_FH_nG"],
    "GCnt0VKcqjT8bl2chw43nsntaZK2": ["location": "-LB1n8ga9C0vCcZXD2Us"]
]

// 转换为直接通过key获取location的新字典
let locationDict: [String: String] = originalDict.mapValues { rawValue in
    // 先把Any类型的value安全转换为嵌套字典,再取出location字段
    (rawValue as? [String: Any])?["location"] as? String ?? "Unknown Location"
}

// 测试访问效果
if let targetLocation = locationDict["SKzSjdBuOpO49wkPVaxtmLQoR0O2"] {
    print("目标location:\(targetLocation)") // 输出:目标location:-LB1fn5GQKTaIc-fGNPS
}

关键细节说明

  • mapValues会遍历原字典的每一对key-value,保留key不变,只对value做转换操作,比手动写循环简洁太多。
  • 因为原字典的value是Any类型,所以必须做安全类型转换:先用as? [String: Any]把value转成嵌套字典,再用可选链?["location"]取出location值,最后再转成String类型。
  • 末尾的?? "Unknown Location"是兜底逻辑——如果某个key对应的value里没有location字段,或者类型不匹配,就会用这个默认值,避免程序崩溃。

如果你的场景能100%保证所有嵌套字典都有location且是字符串,也可以用强制解包,但强烈不推荐——万一数据格式有变化,很容易引发运行时错误。

内容的提问来源于stack exchange,提问作者Ruslan Pitula

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:06:03