我的字典是这样的:
var items = [Int: [String]]()
var itemsResult = [Int: [String]]()
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
}
上述代码的结果不是我的期望。
我想按字母顺序对其进行排序,我该怎么做?
编辑:
来源:
1:["Apple","/image/apple.png","29"]
2:["AAA","/image/aaa.png","29"]
3:["Banana","/image/banana.png","29"]
排序方法:
2:["AAA","/image/aaa.png","29"]
1:["Apple","/image/apple.png","29"]
3:["Banana","/image/banana.png","29"]
我想先按值排序。
答案 0 :(得分:6)
因此,如果我举个例子,这就是诀窍:
android:text
正确的做法是使用对象当然,并注意我不会检查&#34;首先&#34;每个数组中的对象,但这不是一个需要更改的问题。
如果您正在寻找,请告诉我,输出结果为:
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)
编辑: 还要注意,这种情况实际上并没有排序&#34;字典,因为字典按定义没有排序,这将创建一个使用数组索引排序的键值对象数组
答案 1 :(得分:2)
不是将这些变量保存到数组数组中,而是将它们作为字典数组。
你可以这样做:
var dictionaries:[Dictionary<String, String>] = []
for item in items {
let dictionary = {"name": item[0], "url": item[1], "id" : item[2]}
dictionaries.append(dictionary)
}
你可以得到这样的字典排序列表:
dictionaries.sorted(by: { $0["name"] < $1["name"] })