gpt4 book ai didi

dictionary - 如何对Map > Dart进行排序

转载 作者:行者123 更新时间:2023-12-03 03:22:57 25 4
gpt4 key购买 nike

我想在主 map 内对 map 的值进行排序

var data = { 
'Data 1' : {'people': 200, 'disctrict': 20},
'Data 2' : {'people': 300, 'disctrict': 12},
'Data 3' : {'people': 520, 'disctrict': 10},
};

现在,我想基于 people值进行排序。

因此,预期结果应如下所示:
var data = { 
'Data 3' : {'people': 520, 'disctrict': 10},
'Data 2' : {'people': 300, 'disctrict': 12},
'Data 1' : {'people': 200, 'disctrict': 20},
};

最佳答案

可能有更好的解决方案,但是类似这样。您必须将 map 转换为列表才能对其进行排序。

void main() {
var data = {
'Data 1' : {'people': 200, 'disctrict': 20},
'Data 2' : {'people': 300, 'disctrict': 12},
'Data 3' : {'people': 520, 'disctrict': 10},
};

print('unsorted: $data');

List<Map<String,dynamic>> listData = [];
data.forEach((key, value) => listData.add({key: value}));

listData.sort((a, b) {
int aValue = a.values.first["people"];
int bValue = b.values.first["people"];
print('a values: $aValue');
print('b values: $bValue');
return aValue < bValue ? 1 : 0;
});

var sortedMap = Map.fromIterable(listData, key: (e) => e.keys.first, value: (e) => e.values.first);

print('sorted: $sortedMap');
}

关于dictionary - 如何对Map <String,Map <String,int >> Dart进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61200346/

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