我想在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]);
}
答案 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)