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

Преобразование массива хеша в один хеш в ruby

Я пытаюсь преобразовать массив хэшей в хэш с ключом в качестве одного из элементов хеша в массиве.

Например: a = [{"active_accounts": 3, "id": 5}, {"active_accounts": 6, "id": 1}

Я хочу преобразовать этот массив в

a = {5: {"active_accounts": 3}, 1: {"active_accounts": 6}}

Я пытался сделать это, перебирая массив и обращаясь к отдельному хэшу для определенного ключа, но это, похоже, не работает. Любые выводы будут оценены.

17.02.2017

  • Не могли бы вы опубликовать код, который вы пробовали. 17.02.2017
  • 'ответ = Hash.new a.each do |key| response[key[:id]] = {active_accounts: key[:active_accounts]} конец ответа' 17.02.2017

Ответы:


1
a.each_with_object({}) {|obj , hash| hash.merge!(Hash[obj[:id], Hash["active_accounts",obj[:active_accounts]]])}

# {5=>{"active_accounts"=>3}, 1=>{"active_accounts"=>6}}

Надеюсь, поможет.

17.02.2017
  • Это точно сделал Рангнатх. :) 17.02.2017

  • 2

    Безопасный вариант, сопоставление с массивами (ожидаются и обрабатываются те же "id"):

    a.group_by { |e| e.delete("id") }
    

    Именно то, что вы спросили:

    a.group_by { |e| e.delete("id") }
     .map { |k, v| [k, v.first] }
     .to_h
    
    17.02.2017
  • Большое спасибо, мудасобва. Большая помощь. 17.02.2017

  • 3

    Еще одно возможное решение)

    a.map { |hash| [hash.delete(:id), hash] }.to_h
    #=> {5=>{:active_accounts=>3}, 1=>{:active_accounts=>6}}
    
    17.02.2017
    Новые материалы

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

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

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

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

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

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

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