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

Swift中如何从排序后的元组数组中提取相同顺序的key数组

你之前的方案失效的核心原因是Swift中的Dictionary属于无序集合,底层由哈希表实现,插入顺序不会被保留,所以把排序后的元组重新存入字典必然会丢失顺序。

你不需要将排序后的元组转成字典,Dictionary.sorted(by:)方法返回的本身就是顺序固定的[(key: String, value: Int)]元组数组,直接对该数组做映射提取key即可保留排序顺序。


场景1:仅需要排序后的key数组

// 排序并直接提取有序key
func getSortedKeysByValue(_ dict: [String: Int]) -> [String] {
    // 按value升序排序,如需降序把 < 替换为 > 即可
    return dict.sorted(by: { $0.value < $1.value }).map(\.key)
}

// 调用示例
let personalInfoDict = screenConfigResponse?.screenConfiguration?.personalInformation
var sortedPersonalKeys: [String] = []
if let dict = personalInfoDict, !dict.isEmpty {
    sortedPersonalKeys = getSortedKeysByValue(dict)
}

场景2:需要同时保留排序后的键值对

如果后续逻辑还需要用到对应value,直接存储排序后的元组数组即可:

let sortedItems = dict.sorted(by: { $0.value < $1.value })
// 按需提取key或value
let sortedKeys = sortedItems.map(\.key)
let sortedValues = sortedItems.map(\.value)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:45:06