首页 > 解决方案 > 如何用 Dart 中的地图条目填充列表

问题描述

我想在 Dart 中做这个 Python 代码的等价物。可能作为一个衬里,我可以在退货声明中使用。

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]);
}

标签: dart

解决方案


我认为这就是你所要求的:

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:在第二个解决方案中添加了检查,因此它只映射地图中的键。


推荐阅读