ios - 在 Swift4 中按键对嵌套字典进行排序
问题描述
目前,我有一个嵌套字典声明为
var userSchedule = [String:[String:String]]()
我得到如下结果:
["2": ["time": "tbd", "date": "1/15", "name": "Chris"],
"0": ["time": "6:16 PM", "date": "1/15", "name": "Bob"],
"1": ["time": "1:15PM", "date": "1/15", "name": "John"]]
我想对此结果进行排序,以便结果按第一个键排序。
所以:
["0": ["time": "6:16 PM", "date": "1/15", "name": "Bob"],
"1": ["time": "1:15PM", "date": "1/15", "name": "John"],
"2": ["time": "tbd", "date": "1/15", "name": "Chris"]]
我怎样才能在 Swift4 中有效地做到这一点?请帮忙!
解决方案
你可以这样做:首先将它排序为一个数组,然后用字典元素构建一个数组。这很简单,因为它只有两行代码。
var userSchedule = ["2": ["time": "tbd", "date": "1/15", "name": "Chris"],
"0": ["time": "6:16 PM", "date": "1/15", "name": "Bob"],
"1": ["time": "1:15PM", "date": "1/15", "name": "John"]]
let userScheduleArray = userSchedule.sorted{$0.key < $1.key}
print(userScheduleArray)
//[(key: "0", value: ["time": "6:16 PM", "date": "1/15", "name": "Bob"]), (key: "1", value: ["time": "1:15PM", "date": "1/15", "name": "John"]), (key: "2", value: ["time": "tbd", "date": "1/15", "name": "Chris"])]
let separatedDict = userScheduleArray.map{Dictionary(uniqueKeysWithValues: [$0])}
print(separatedDict)
//[["0": ["time": "6:16 PM", "date": "1/15", "name": "Bob"]],
// ["1": ["time": "1:15PM", "date": "1/15", "name": "John"]],
// ["2": ["time": "tbd", "date": "1/15", "name": "Chris"]]]
print(type(of: separatedDict))
//[[String:[String:String]]] i.e. Array<Dictionary<String, Dictionary<String, String>>>
推荐阅读
- php - 如何在incinga2中运行sql自定义查询?
- javascript - JavaScript - 返回两个对象之间的差异?
- git - 错误用户的 git ssh 权限被拒绝
- python - 默认情况下 __eq__() 方法里面有什么
- flutter - 我有一个关于 RenderBox 没有布局的问题:ChartContainerRenderObject
#84b56 需要油漆 - scala - 使用 Spark 和 Scala 清理大小约为 40GB 的 CSV/Dataframe
- spring-batch - Spring批处理Gemfire 9.6连接错误 - 原因:java.io.IOException:无法写入部署目录
- python - 编辑表格内容并将更改发送到数据库
- javascript - 试图让 cookie 在 html 的表单中预填充字段
- java - How can I copy resolved dependencies to a new location, into dynamically created directories based on the dependencies details