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

Swift中Dictionary分组后dict[0]返回nil,dict[1]返回元素的原因?

问题解析

先看你的代码实现:

import UIKit

struct test{
    var id: Int
    var nsm: String
}
let datas = [test(id:1, nsm: "test1"), test(id:2,nsm: "test2"),test(id: 3, nsm: "test3")]
let dict = Dictionary(grouping: datas, by: { $0.id})

print(dict[0]) // 输出nil
print(dict[1]) // 输出[test(id: 1, nsm: "test1")]

原因很直接:

  • Dictionary(grouping:by:)方法是用你指定的key(这里是元素的id值)对数组元素分组,生成的字典里只会包含原数组中实际存在的key值。
  • 你的datas数组里所有元素的id是1、2、3,所以生成的dict的key只有这三个,不存在key为0的条目,因此dict[0]返回nil。
  • 而dict[1]能获取到元素,是因为原数组里确实有id=1的元素,分组后这个key对应的就是包含该元素的数组。

额外说明:Dictionary(grouping:)返回的是[Key: [Value]]类型,这里Key是Int,Value是你的test结构体。当你访问字典中不存在的key时,Swift会返回nil,这是字典的默认行为。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 14:55:19