Как преобразовать список в карту в 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 (), но он не делает то, что я ожидаю: он использует индекс списка в качестве ключа. Мой вопросы:

  • вы знаете что-нибудь в библиотеках дротиков, чтобы сделать это ?
  • если нет, какой-либо план добавить такую функцию в основной lib ?

3 ответов


такого метода нет, и я не думаю, что есть какой-либо план добавления такой функции. Ты можешь!-Файл -3-->проблема если вы считаете это важным.

на список.asMap документы :

возвращает неизменяемый вид карты this.

Он имеет индексы этого списка в качестве ключей и соответствующие элементы в качестве значений.

тем не менее, вы можете делать то, что хотите, как это :

Map dict(List l) {
  final m = {};
  l.forEach((e){ m[e[0]] = e[1]; });
  return m;
}

main(){
  print(dict([["a", "b"], ["c", "d"]])); // prints {a: b, c: d}
}

в Dart 1.1, вы можете использовать этот конструктор карты:

new Map.fromIterable(list, key: (v) => v[0], value: (v) => v[1]);

Это было бы ближе всего к вашему первоначальному предложению.


в dart еще нет понятия кортежей или пар (кроме двух итерационных элементов). Если у Дарт было такое понятие, то ... --1-->вопрос 7088 предлагает решить это с помощью карты.из конструктора fromPairs.