dart - 如何用 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]);
}
解决方案
我认为这就是你所要求的:
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:在第二个解决方案中添加了检查,因此它只映射地图中的键。
推荐阅读
- windows - 授予 NSIS 语言的完全访问权限
- macos - 让 SonarQube 在 MacOS 中工作时出现问题
- ssas - Visual Studio 2019 中的 Analysis Services 项目部署问题
- python - 在 for 循环中更改循环字符串
- java - 如何将 InputStream 字节写入字符串?
- reactjs - 有人知道如何立即重定向到链接吗?反应
- angular - Angular:将公共环境变量分开到 commonEnv.ts 文件
- php - 如何在测试开始之前调用 php artisan dictionary:schema:update?PhpUnit
- java - 如何使用 JNA (Java) 为活动窗口获取 X11 WM_CLASS?
- java - Apache Pulsar,无法从 getCounter() 读取值,但可以读取其他状态值