List 如何在Dart中将列表转换为地图

List 如何在Dart中将列表转换为地图,list,map,dart,List,Map,Dart,我正在寻找一种在Dart中将列表转换为地图的方法 例如,在python中,您可以执行以下操作: l= [ ('a',(1,2)), ('b',(2,3)), ('c',(3,4) ) ] d=dict(l) ==> {'a': (1, 2), 'c': (3, 4), 'b': (2, 3)} dict函数需要一个夫妇列表。对于每个耦合,第一个元素用作键,第二个元素用作数据 在Dart中,我看到了列表的以下方法:asMap(),但它没有达到我预期的效果:它使用列表索引作为键。 我的问题是

我正在寻找一种在Dart中将列表转换为地图的方法

例如,在python中,您可以执行以下操作:

l= [ ('a',(1,2)), ('b',(2,3)), ('c',(3,4) ) ]
d=dict(l)
==> {'a': (1, 2), 'c': (3, 4), 'b': (2, 3)}
dict函数需要一个夫妇列表。对于每个耦合,第一个元素用作键,第二个元素用作数据

在Dart中,我看到了列表的以下方法:asMap(),但它没有达到我预期的效果:它使用列表索引作为键。 我的问题是:

  • 你知道Dart库中有什么东西可以做到这一点吗
  • 如果没有,有没有计划在核心库中添加这样的功能
提议:

List.toMap() //same as python dict.
List.toMap( (value) => [ value[0], value[1] ] ) //Using anonymous function to return a key and a value from a list item.
感谢和问候

尼古拉斯

您可以使用:

或收集(从Dart 2.3开始):


dart中还没有元组或对的概念(除了两元素Iterable)。如果Dart有这样一个概念,那么建议使用Map.fromPairs构造函数来解决这个问题。

在Dart 1.1中,您可以使用Map:


这将最接近您的原始提案。

另一种可能性是使用构造函数:

final result=Map.fromEntries(l.Map((值)=>MapEntry(值[0],值[1]));

这可能与答案没有直接关系,但如果有人想要转换

var list = ['fee','fi','fo','fum'];
像这样的地图

var map = {0:'fee', 1:'fi', 2:'fo', 3:'fum'};
你可以用

var map = list.asMap();
PS

此地图不可编辑

详细信息
  • 颤振1.26.0-18.0.106之前
解决方案 /libs/extensions/list.dart

对于Dart 2.3及更高版本, 有许多解决方案,但最简单的是:

1-使用
asMap()
函数

List list = ['steve', 'bill', 'musk'];
Map map = list.asMap();
print(map);
输出:

{0: steve, 1: bill, 2: musk}
{steve: valueOfsteve, bill: valueOfbill, musk: valueOfmusk}
2-使用
在地图内部的
集合中
map={}

List list = ['steve', 'bill', 'musk'];
Map map = {for (var item in list) '$item' : 'valueOf$item'};
print(map);
输出:

{0: steve, 1: bill, 2: musk}
{steve: valueOfsteve, bill: valueOfbill, musk: valueOfmusk}

希望这会有帮助。

+Alexandre解决方案即使基于2元素列表,对我来说也很好,它可以完成这项工作。这是一种简洁的方式:)fromIterable的打字能力非常弱。因此,收集@Alexandre的答案是唯一推荐的方法。
fromIterable
的键入能力非常弱。因此,收集是唯一推荐的方法。
{0: steve, 1: bill, 2: musk}
List list = ['steve', 'bill', 'musk'];
Map map = {for (var item in list) '$item' : 'valueOf$item'};
print(map);
{steve: valueOfsteve, bill: valueOfbill, musk: valueOfmusk}