gpt4 book ai didi

ios - 在for循环后按值对字典数组进行排序?

转载 作者:行者123 更新时间:2023-11-28 16:11:52 25 4
gpt4 key购买 nike

我已经看到很多类似问题的答案,但到目前为止,这些方法都没有奏效。

if let users = snapshot.value!["users"] as? Dictionary<String,AnyObject> {

each.users = Int(users.count)

var pointsArray = [Dictionary<String,Int>]()
for (key, value) in users {


let uid = key
let points = value["points"] as! Int
pointsArray.append([uid : points])

}

然后我需要按“点”对 pointsArray 进行排序,从高到低排序,获取第 0 个(最高)元素,然后获取要使用的 uid。

我试过:

  var myArr = Array(pointsArray.keys)
var sortedKeys = sort(myArr) {
var obj1 = dict[$0] // get ob associated w/ key 1
var obj2 = dict[$1] // get ob associated w/ key 2
return obj1 > obj2
}

这给了我

Value of type [ Dictionary <String,Int>] has no member keys.

我猜这是因为我正在尝试对我的指令数组与指令本身进行排序?我如何切换它以进入实际的字典与在数组上运行排序?

最佳答案

对 - 您没有正确访问字典的键。

这是一个工作代码:

var pointsArray = [Dictionary<String, Int>]()

pointsArray.append(["1" : 10])
pointsArray.append(["2" : 45])
pointsArray.append(["3" : 30])

// sort by points
let sorted = pointsArray.sort({ $0.first!.1 > $1.first!.1 })

print(sorted) // [["2": 45], ["3": 30], ["1": 10]]

Array(pointsArray.keys) - 这不起作用,因为 pointsArray 是一个 array,因此它没有 属性。 pointsArray 的内容是字典,它们有。所以你可以像这样访问第一个字典的键:pointsArray[0].keys

关于ios - 在for循环后按值对字典数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39458512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com