飞镖中的逆映射

90i*_*ion 3 dart

假设我在 dart 中有以下地图:

Map f = {
  0 : 0,
  1 : 1,
  2 : 0,
  3 : 1, 
  4 : 0,
  5 : 1
};
Run Code Online (Sandbox Code Playgroud)

飞镖中有什么东西可以让您轻松处理地图的逆映射f?因此,例如,在这种情况下,逆映射f?¹[0](以数学符号表示)应该等于集合0, 2, 4

jgl*_*tre 5

如果值是唯一的,那么它只是:

Map inverse(Map f) {
 return f.map( (k, v) => MapEntry(v, k) );
}
Run Code Online (Sandbox Code Playgroud)

它不会抱怨重复,它会覆盖它们。


Gün*_*uer 4

Map f = {
  0 : 0,
  1 : 1,
  2 : 0,
  3 : 1,
  4 : 0,
  5 : 1
};

main() {
  print(f.keys.where((k) => f[k] == 0));
  // or 
  print(new Map.fromIterable(f.values.toSet(), 
    key: (k) => k, 
    value: (v) => f.keys.where((k) => f[k] == v)));
}
Run Code Online (Sandbox Code Playgroud)

尝试DartPad