Как преобразовать список в карту в 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.