如何在Dart中使用地图中的条目填充列表

时间:2019-10-11 09:42:03

标签: dart

我想在Dart中完成与该Python代码等效的操作。可能我可以在return语句中使用它。

m = {1: 'a', 2: 'b', 3: 'c'}
l = [1, 3]
[m[index] for index in l]

这会生成一个新的列表,例如[[a','c']

在Dart中,它的长版就是这个。

List<String> r = [];
for (var key in l) {
  r.add(m[key]);
}

2 个答案:

答案 0 :(得分:0)

我想这就是你要的:

void main() {
  final m = {1: 'a', 2: 'b', 3: 'c'};
  final l = [1, 3, 4];

  List<String> r1 = m.entries.where((e) => l.contains(e.key)).map((e) => e.value).toList();
  List<String> r2 = l.where((k) => m.containsKey(k)).map((k) => m[k]).toList();
  print(r1); // [a, c]
  print(r2); // [a, c]
}

更新1::添加了另一个示例(r2),它会遍历列表。

更新2:向第二个解决方案添加了检查,因此它仅映射地图中存在的键。

答案 1 :(得分:0)

使用Dart扩展方法,可以按照以下示例进行操作:

import 'package:enumerable/enumerable.dart';

void main(List<String> args) {
  final r = l.select((e) => m[e]);
  print(r);
}

final m = {1: 'a', 2: 'b', 3: 'c'};
final l = [1, 3];

结果:

(a, c)