如何按值对字典进行排序?

yz_*_*yz_ 2 sorting dictionary swift

我的字典是这样的:

var items = [Int: [String]]() 
var itemsResult = [Int: [String]]()
Run Code Online (Sandbox Code Playgroud)

itmesResult存储从服务器下载的数据.并将数据传递给items = itmesResult的项目使用

该值有3个元素,如["Apple","/ image/apple.png","29"],我想按照Apple的第一个值对字典进行排序.

for (k,v) in (itemsResult.sorted(by: { $0.value[0] < $1.value[0] })) { 
  items[k] = v
}
Run Code Online (Sandbox Code Playgroud)

上面代码的结果不是我的期望.

我想按字母顺序排序,我该怎么做?

编辑:

起源:

1:["Apple","/image/apple.png","29"]
2:["AAA","/image/aaa.png","29"]
3:["Banana","/image/banana.png","29"]
Run Code Online (Sandbox Code Playgroud)

排序方式:

2:["AAA","/image/aaa.png","29"]
1:["Apple","/image/apple.png","29"]
3:["Banana","/image/banana.png","29"]
Run Code Online (Sandbox Code Playgroud)

我想按第一个价值排序.

小智 6

所以如果我举个例子,这就是诀窍:

var items = [Int: [String]]()

items[0] = ["Apple","/image/apple.png","29"]
items[1] = ["AAA","/image/aaa.png","29"]
items[2] = ["Banana","/image/banana.png","29"]

let itemResult = items.sorted { (first: (key: Int, value: [String]), second: (key: Int, value: [String])) -> Bool in
    return first.value.first! < second.value.first!
}

print (itemResult)
Run Code Online (Sandbox Code Playgroud)

正确的做法是使用对象当然,并注意我没有空检查每个数组中的"第一个"对象,但这不是一个需要更改的问题.

让我知道如果这是你正在寻找的,输出是:

[(1, ["AAA", "/image/aaa.png", "29"]), (0, ["Apple", "/image/apple.png", "29"]), (2, ["Banana", "/image/banana.png", "29"])]
Run Code Online (Sandbox Code Playgroud)

编辑:还要注意,这种情况实际上并没有"排序"字典,因为字典按照定义没有排序,这创建了一个使用数组索引排序的键值对象数组