我正在對能夠做到這一點的字典陣列進行排序,下面是代碼,但輸出形式在
[字典<String, Any>.Element]
我想在 [String: Any] 中怎么做
func sortWithTableColumn(datavalue:[[String : Any]]) -> [[String : Any]]{
var allresult2 = [[Dictionary<String, Any>.Element]]()
for dict in datavalue{
let sortedrow = dict.sorted(by: { $0.key < $1.key })
allresult2.append(sortedrow)
}
}
uj5u.com熱心網友回復:
問題是:
Swift 的 Dictionary 型別是一個無序集合。未指定迭代字典時檢索鍵、值和鍵值對的順序。
因此,如果您嘗試在排序后將元組陣列轉換為字典:
var newDict = [String : Any]
for (key, value) in sortedrow {
newDict[key] = value
}
你得到沒有排序的字典。再次。您可以嘗試使用 Class 或 Struct 來代替這個:
struct SomeStruct {
var key: String
var someType: Any
}
然后將您的 [Dictionary<String, Any>] 轉換為 [[SomeStruct]]:
func sortWithTableColumn(datavalue:[[String : Any]]) -> [[SomeStruct]] {
var allresult2 = [[SomeStruct]]()
for dict in datavalue {
let sortedrow = dict.sorted(by: { $0.key < $1.key })
var newArray = [SomeStruct]()
for (key, value) in sortedrow {
newArray.append(SomeStruct(key: key, someType: value))
}
allresult2.append(newArray)
}
return allresult2
}
//test [Dictionary<String, Any>]
let dictionary = [
["a": 2, "k": 4, "b": 3, "l": 3, "c":7],
["b": 3, "a": 2, "k": 4, "c":7, "l": 3]]
let sortedArray = sortWithTableColumn(datavalue: dictionary)
//print sorted array of arrays from SomeStructs
print(sortedArray)
//print key from sorted array of arrays from SomeStructs
print(sortedArray[0][0].key)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/528935.html
標籤:数组迅速字典
