#scala #list #vector #tuples #option
#скала #Список #вектор #кортежи #опция
Вопрос:
У меня есть вектор выбора списка кортежей, например
val x = Vector(
Some(List(("x",2))),
Some(List(("x",2),("y",3))),
None,
Some(List(("x",2),("z",2))),
Some(List(("x",2),("z",2))),
None)
Как получить список из приведенного выше вектора
Обновленный:
Конечная цель — получить общее количество элементов в списке (у нас есть только три элемента x, y или z).
например, общее количество x вернет 8, а общее количество y вернет 3, а общее количество z вернет 4
Нравится
val totalx = x.flatten.filter ....
Комментарии:
1. Не могли бы вы предоставить правильный код
2. И уточнение, то, что вы ожидаете вместе с вашей попыткой, было бы неплохо
3. Извините, я не вижу
Vector
здесь иsome
не компилируется. можете ли вы предоставить действительный код?
Ответ №1:
x.flatMap {
case Some(l) => l.filter(_._1=="x").map(_._2)
case None => List(0)}.sum
Ответ №2:
Извините, я получил ответ
x.flatten.flatten.filter(x => x._1 == "y").map(x => x._2).sum
используется flatten для удаления none, а затем снова используется flatten для получения всего кортежа flatten, затем фильтрация и подведение итогов