飞镖:将地图转换为2个列表

时间:2019-12-22 18:26:27

标签: flutter dart

我正在尝试将以下地图转换为2个列表。

Map map = {'Jack': 'red', 'Adam': 'blue', 'Katherin': 'green'};

我想成为这个:(顺序很重要)

List myList1 = ['Jack', 'Adam', 'Katherin'];
List myList2 = ['red', 'blue', 'green'];

这可能吗,怎么办? 我搜索了槽栈溢出,并且响应给了我这个列表(不是我要搜索的内容)

[{ Jack, 'red' }, { Adam, 'blue' }, { Katherin, 'green' }] // not what I need

感谢您的帮助和努力!

3 个答案:

答案 0 :(得分:2)

如果我的问题正确,那么您正在寻找的内容已经内置在Map Class中。看看:

Map map = {'Jack': 'red', 'Adam': 'blue', 'Katherin': 'green'};

print(map.keys.toList());
print(map.values.toList());

输出:

[Jack, Adam, Katherin]
[red, blue, green]

我希望这是您想要的。

答案 1 :(得分:1)

要执行此操作,可以执行以下操作:

Map map = {'Jack': 'red', 'Adam': 'blue', 'Katherin': 'green'};

List<String> values = List();  
List<String> keys   = List();

map.forEach((k,v) => values.add(v));
print(values);

map.forEach((k,v) => keys.add(k));
print(keys);

使用forEach来迭代映射的值,然后使用add()方法将key添加到一个列表中,并将values添加到另一个列表中。

答案 2 :(得分:1)

只需填写地图,然后使用键和值可迭代的吸气剂即可形成列表。

void main() {
  Map<String, String> map = Map<String, String>();
  map["Jack"] = "red";
  map["Adam"] = "blue";
  map["Katherin"] = "green";
  print(map.toString());

  List<String> names = map.keys.toList();
  List<String> colors = map.values.toList();
  print(names);
  print(colors);
}

输出

{Jack: red, Adam: blue, Katherin: green}
[Jack, Adam, Katherin]
[red, blue, green]