Nano Hash - криптовалюты, майнинг, программирование

Обжигающий кортеж flatMap, содержащий список

У меня есть следующий входной кортеж, который я хотел бы использовать для flatMap: (String, List[String])

НАПРИМЕР. Вход:

("a", ["1", "2"])
("b", ["3", "4"])

Необходимый вывод:

("a", "1")
("a", "2")
("b", "3")
("b", "4")

Есть ли элегантный способ сделать это в Scalding/Scala?

16.05.2016

Ответы:


1

Вы можете сделать это с помощью многострочного выражения for ... yield:

for {
  (a, bs) <- tupleList
  b <- bs
} yield (a, b)
16.05.2016

2

Возможно, это не лучшее решение, но каскадные карты, а затем выравнивание результата были лучшим, что я мог придумать.

Удивительная вещь в FP заключается в том, что вы можете делать одно и то же совершенно по-разному. Надеюсь, кто-нибудь опубликует другое решение

val input = List( ("a", List("1", "2")), ("b", List("3","4")))

val output = input.map(it => it._2.map { (it._1, _)}).flatten

Как указано, вывод может измениться на

input.flatMap(tuple => tuple._2.map { (tuple._1 , _) })
16.05.2016
  • Нет необходимости сглаживать, если вы используете flatMap. 16.05.2016
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..