import "package:queries/collections.dart";
void main() {
var chordtypes = {
"maj": [0, 4, 7],
"M7": [0, 4, 7, 11],
"m7": [0, 3, 7, 10],
"6": [0, 4, 7, 9],
"9": [0, 4, 7, 10, 14],
"sus2": [0, 2, 7],
"sus4": [0, 5, 7],
"omit3": [0, 7],
"#5": [0, 4, 8],
"+7b9#11": [0, 4, 8, 10, 13, 18],
"+9": [0, 4, 8, 10, 14]
};
var dict = new Dictionary<String, List>.fromMap(chordtypes);
// Sort by list length, then by key
var sorted = dict
.orderBy((kv) => kv.value, (a, b) => b.length.compareTo(a.length))
.thenBy((kv) => kv.key, (a, b) => a.compareTo(b));
dict = sorted.toDictionary((kv) => kv.key, (kv) => kv.value);
for (var kv in dict) {
print("$kv");
}
}
Сортировано [listLength, ключ]
+7b9#11 : [0, 4, 8, 10, 13, 18]
+9 : [0, 4, 8, 10, 14]
9 : [0, 4, 7, 10, 14]
6 : [0, 4, 7, 9]
M7 : [0, 4, 7, 11]
m7 : [0, 3, 7, 10]
#5 : [0, 4, 8]
maj : [0, 4, 7]
sus2 : [0, 2, 7]
sus4 : [0, 5, 7]
omit3 : [0, 7]
Итак, вы хотите быть «+ 7b9 # 11», чтобы быть первым элементом? Я вряд ли думаю, что это возможно с необработанной картой в Дарт. – Robert