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

如何按照指定数组的顺序对字典进行排序?

解决Swift字典按指定顺序排序的问题

首先要明确:Swift 中的标准[String: Any]这类字典是无序的,它不会保存键的插入或定义顺序。所以要实现你想要的“有序字典”效果,有两种常用方案:

方案1:用数组存储有序键值对(兼容所有Swift版本)

适合只需要按顺序遍历、输出键值对的场景,步骤很简单:

  1. 遍历你指定顺序的数组orderToFollow
  2. 依次从原字典中取出对应键的值
  3. 把键和值组成元组存入数组,数组会保持遍历的顺序

代码示例:

var orderToFollow:[String] = ["fromAccount", "toAccount", "amount", "benName"]
var randomOrderDic = [
      "benName": "abc", 
      "amount": 15.0, 
      "toAccount": "123456", 
      "fromAccount": "789530"
     ]

// 创建数组存储按顺序排列的键值对
var orderedItems: [(key: String, value: Any)] = []
for key in orderToFollow {
    // 确保字典里有这个键的值,避免崩溃
    if let value = randomOrderDic[key] {
        orderedItems.append((key, value))
    }
}

// 打印出你想要的格式
print("[")
for item in orderedItems {
    // 根据值的类型调整打印格式,字符串加引号,数字直接输出
    let valueStr: String
    if let strValue = item.value as? String {
        valueStr = "\"\(strValue)\""
    } else {
        valueStr = "\(item.value)"
    }
    print("  \"\(item.key)\": \(valueStr),")
}
print("]")

方案2:使用OrderedDictionary(iOS 16+/macOS 13+及以上)

如果你需要一个既保留顺序、又能像普通字典一样通过键访问值的结构,可以用苹果Swift Collections框架里的OrderedDictionary,它会严格保持键的插入顺序。

步骤:

  1. 先导入SwiftCollections框架
  2. 按指定顺序的数组,把原字典的键值对依次插入到OrderedDictionary中

代码示例:

// 先导入框架
import SwiftCollections

var orderToFollow:[String] = ["fromAccount", "toAccount", "amount", "benName"]
var randomOrderDic = [
      "benName": "abc", 
      "amount": 15.0, 
      "toAccount": "123456", 
      "fromAccount": "789530"
     ]

// 创建有序字典
var orderedDict = OrderedDictionary<String, Any>()
for key in orderToFollow {
    if let value = randomOrderDic[key] {
        orderedDict[key] = value
    }
}

// 直接打印就是有序的格式
print(orderedDict)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 15:45:21