[英]Swift Sort Dictionary by property of an object value
我有一個字典,如<String,Loto>
,Loto是下面的對象;
Loto:
{
"success": true,
"data": {
"oid": "64kbbqi8dbxygb00",
"hafta": 961,
"buyukIkramiyeKazananIl": "",
"cekilisTarihi": "11/04/2015",
"cekilisTuru": "SAYISAL_LOTO",
"rakamlar": "03#02#48#16#15#08",
"rakamlarNumaraSirasi": "02 - 03 - 08 - 15 - 16 - 48",
"devretti": false,
"devirSayisi": 0,
"bilenKisiler": [
{
"oid": "64kbbxi8dbxyg403",
"kisiBasinaDusenIkramiye": 7.35,
"kisiSayisi": 185712,
"tur": "$3_BILEN"
},
{
"oid": "64kbbxi8dbxyg402",
"kisiBasinaDusenIkramiye": 53.05,
"kisiSayisi": 9146,
"tur": "$4_BILEN"
},
{
"oid": "64kbbxi8dbxyg401",
"kisiBasinaDusenIkramiye": 4532.2,
"kisiSayisi": 142,
"tur": "$5_BILEN"
},
{
"oid": "64kbbxi8dbxyg400",
"kisiBasinaDusenIkramiye": 1528438.75,
"kisiSayisi": 1,
"tur": "$6_BILEN"
}
],
"buyukIkrKazananIlIlceler": [
{
"il": "10",
"ilView": "BALIKESÄ°R",
"ilce": "01001",
"ilceView": "AYVALIK"
}
],
"kibrisHasilati": 51127,
"devirTutari": 0.09,
"kolonSayisi": 10537872,
"kdv": 1599672.97,
"toplamHasilat": 10537872,
"hasilat": 8938199.03,
"sov": 893819.9,
"ikramiyeEH": 8044379.129999999,
"buyukIkramiye": 1528432.03,
"haftayaDevredenTutar": 0
}
}
所以我的字典像<“11042015”,Loto>,我想通過loto對象的“hafta”屬性對這本詞典進行排序。
我怎樣才能做到這一點? 請幫我!
如果Loto
是一個具有hafta
屬性的對象,您可以通過將字典傳遞給sorted
函數以及一個告訴它如何對條目sorted
的閉包來對字典進行sorted
:
sorted(dict) { $0.1.hafta < $1.1.hafta }
( $0.1
和$1.1
因為詞典表示為一系列鍵/值對 - 您希望按值的屬性排序,即元組條目1
)
注意,這將返回一個排序數組,類型為[(String,Loto)]
對,而不是字典(因為Swift字典是無序的)。
(如果Loto
不是真正的對象而是另一個字典,你可能需要{$0.1["hafta"] < $1.1["hafta"]}
- 這實際上取決於你如何保存你的數據 - 好消息是你不需要擔心選項,因為它們可以與<
)進行比較
如果您不需要密鑰,只需對值進行排序:
sorted(dict.values) { $0.hafta < $1.hafta }
這會給你一個類型為[Loto]
的排序數組
字典不是訂購的。 你需要的是將它轉換為數組,然后對其進行排序。 所以這樣的事情。
let lotoArray = lotoDictionary.allObjects as [Loto]
lotoArray.sort { $0.hafta < $1.hafta }
你不能。 字典的鍵沒有排序。 您可以獲取值的數組並對該數組進行排序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.