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

如何从字典数组提取键值对并生成指定格式员工信息

嘿,我来帮你搞定这两个Swift字典数组的问题~

1. 如何从字典数组中提取键值对?

在Swift里,提取字典数组的键值对有几种常用方式,看你需求来选:

  • 嵌套循环遍历:最直接的方式,先遍历数组里的每个字典,再遍历字典的键值对:
let dictArray: [[String: Any]] = [["name": "Alice"], ["age": 30]]

for dict in dictArray {
    for (key, value) in dict {
        print("\(key): \(value)")
    }
}
  • 用高阶函数整理成统一数组:如果想把所有键值对收集到一个数组里,可以用flatMap:
let allKeyValuePairs = dictArray.flatMap { $0 }
// allKeyValuePairs 是 [(String, Any)] 类型,包含数组中所有字典的键值对
  • 提取指定键的值:如果只关心某个特定键的值,直接遍历数组+字典取值就行:
let names = dictArray.compactMap { $0["name"] as? String }
// names 会是 ["Alice"] 这样的字符串数组
2. 针对给定代码生成指定字符串

要生成Jane Doe (ID: 243) earns $58000.0 (including commission)这个字符串,我们需要补全代码里的TODO部分,再修改遍历逻辑。下面是完整的修改后的代码:

let empIDKey = "EmpID"
let nameKey = "Name"
let payKey = "PayRate"
// 补全佣金对应的键
let commissionKey = "Commission"

// Create employees
var emp1 = Dictionary<String, Any>()
emp1[empIDKey] = 137
emp1[nameKey] = "John Doe"
emp1[payKey] = 35000.00

var emp2 = Dictionary<String, Any>()
emp2[empIDKey] = 243
emp2[nameKey] = "Jane Doe"
emp2[payKey] = 50000.00
// 补全emp2的佣金(50000+8000=58000,对应目标字符串的总薪资)
emp2[commissionKey] = 8000.00

// Add employees to a list
var employees = [Dictionary<String, Any>]()
employees.append(emp1)
employees.append(emp2)

// 修改遍历逻辑,生成目标格式的字符串
for person in employees {
    // 安全提取字段,避免类型不匹配或缺失导致崩溃
    guard let id = person[empIDKey] as? Int,
          let name = person[nameKey] as? String,
          let basePay = person[payKey] as? Double else {
        continue // 如果字段有问题,跳过这个员工
    }
    
    // 计算总薪资:基础薪资+佣金(没有佣金的话按0算)
    let commission = person[commissionKey] as? Double ?? 0.0
    let totalPay = basePay + commission
    
    // 拼接成要求的字符串
    let employeeInfo = "\(name) (ID: \(id)) earns $\(totalPay) (including commission)"
    
    // 打印结果,emp2会输出你要的目标字符串
    print(employeeInfo)
}

关键说明:

  • 用guard let做类型转换和可选值绑定,这是Swift里处理字典取值的安全做法,避免崩溃;
  • 佣金字段是可选的,所以用?? 0.0做默认值处理,保证没有佣金的员工也能正常计算总薪资;
  • 严格按照目标格式拼接字符串,确保输出符合要求。

内容的提问来源于stack exchange,提问作者Mayowa Paul

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 15:37:31