我有一个像<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
}
}
所以我的字典就像&lt;“11042015”,Loto&gt;我想按照loto对象的“hafta”属性对这本词典进行排序。
我该怎么做?请帮帮我!
答案 0 :(得分:8)
如果Loto
是一个具有hafta
属性的对象,您可以通过将字典传递到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]
答案 1 :(得分:3)
不订购字典。你需要的是将它转换为数组,然后对其进行排序。就像这样。
Dog Image
Dog Text
Cat Image
Cat Text
答案 2 :(得分:1)
你不能。字典的键没有排序。您可以获取值的数组并对该数组进行排序。