ハッシュの既存の配列にハッシュを追加するルビーの方法は何ですか?

バイナリメイソン

一定量のカテゴリを持つ大規模なデータセットがあります。私はもともとすべてをハッシュの配列に格納してきました。うまく機能しますが、データのサイズとカテゴリの冗長性を考慮すると、効率的ではありません。

現在、さまざまなタイプ/カテゴリのハッシュを使用し、各カテゴリ内にハッシュの配列を格納しています。

現在、データを追加する現在の方法は:type、型配列に追加する前に各ハッシュキーを削除することです。すべてが機能しています。それにもかかわらず、私はこれを行うためのより合理化された「ルビーの方法」があると確信しています:

# Very large data set with redundant types.
gigantic_array = [
  { type: 'a', organization: 'acme inc', president: 'bugs bunny' },
  { type: 'a', organization: 'looney toons', president: 'donald' },
  { type: 'b', organization: 'facebook', president: 'mark' },
  { type: 'b', organization: 'myspace', president: 'whoknows' },
  { type: 'c', organization: 'walmart', president: 'wall' }
  # multiply length by ~1000
]

# Still gigantic, but more efficient.
# Stores each type as symbol.
# Each type is an array of hashes.
more_efficient_hash = {
  type: {
    a: [
      { organization: 'acme inc', president: 'bugs bunny' },
      { organization: 'looney toons', president: 'donald' }
    ],

    b: [
      { organization: 'facebook', president: 'mark' },
      { organization: 'myspace', president: 'whoknows' }
    ],

    c: [
      { organization: 'walmart', president: 'wall' }
      # etc....
    ]
  }
}

hash_to_add = { type: 'c', organization: 'target', president: 'sharp' }

# Adds hash to array of types inside the gigantic more_efficient_hash.
# Is there a better way?
more_efficient_hash[:type][hash_to_add[:type].to_sym].push(hash_to_add.delete(:type))
Kristján

いくつかの小さなデータクラスが役立つこと、および結果キーが値を追加しないことについて、undur_gongorに同意し:typeます。

からの最初の変換はgigantic_array、で簡単に行うことができますgroup_byHash#deleteはハッシュではなく削除されたキーの値返すので、最後の行が希望どおりに機能しているとは思えないことに注意してください。

> more_efficient_hash = gigantic_array.group_by {|item| item.delete(:type).to_sym}
{
  a: [
    {:organization=>"acme inc", :president=>"bugs bunny"},
    {:organization=>"looney toons", :president=>"donald"}
  ],
  b: [
    {:organization=>"facebook", :president=>"mark"},
    {:organization=>"myspace", :president=>"whoknows"}
  ],
  c: [
    {:organization=>"walmart", :president=>"wall"}
  ]
}

その時点から、最後の行はかなりきれいです。delete破壊的であるため、少し短くすることができます。

> more_efficient_hash[hash_to_add.delete(:type).to_sym] << hash_to_add
# ...
  c: [
    {:organization=>"walmart", :president=>"wall"},
    {:organization=>"target", :president=>"sharp"}
  ]

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ルビーのハッシュの配列からハッシュキーを変更するにはどうすればよいですか?

分類Dev

ハッシュのルビー配列を単一のハッシュに変換するにはどうすればよいですか?

分類Dev

ルビーのハッシュ値でハッシュの配列内を検索するにはどうすればよいですか?

分類Dev

PowerShellのハッシュ内の既存の配列に値を追加しますか?

分類Dev

ルビーの配列のハッシュを変換する

分類Dev

キーなしで既存のハッシュに値を追加する方法

分類Dev

Perl、ハッシュの配列内のハッシュを削除する方法は?

分類Dev

ルビーの同じキーに基づいてハッシュの配列をマージする方法は?

分類Dev

ルビーこの配列のハッシュをソートする方法

分類Dev

postgresでハッシュの配列からキーを表示する方法は?

分類Dev

配列からのキーでハッシュを初期化する方法は?

分類Dev

ハッシュルビー内の配列の合計を計算する方法

分類Dev

ルビーのハッシュの配列に値を更新する効率的な方法は?

分類Dev

共通のキーによってハッシュの配列を複数の配列に分割する簡単な方法はルビーにありますか?

分類Dev

Pythonの暗号ハッシュとハッシュテーブルハッシュの違いは何ですか?

分類Dev

配列のハッシュキーにプッシュする方法は?

分類Dev

Grapeでハッシュの配列を定義する方法は?

分類Dev

Ruby配列のハッシュをループする方法

分類Dev

Perlでハッシュをハッシュの配列に変換する

分類Dev

Rust のハッシュ テーブルの文字列値に追加する方法は?

分類Dev

ハッシュの配列内でハッシュをマージする

分類Dev

配列値に基づいてハッシュの配列からハッシュを抽出する方法

分類Dev

ハッシュの配列で、1つのハッシュからすべてのキーを検索する

分類Dev

ハッシュテーブルをファイルに保存する最良の方法は何ですか?

分類Dev

ルビーハッシュを特定の形式の文字列に変換する方法

分類Dev

複数のファイルの既存のハッシュスクリプトにハッシュを追加する

分類Dev

Perlハッシュハッシュの最終レベルの値を1つの配列に取得するにはどうすればよいですか?

分類Dev

参照なしで配列のハッシュに配列を追加する

分類Dev

ハッシュの配列に新しいハッシュを追加するにはどうすればよいですか?

Related 関連記事

  1. 1

    ルビーのハッシュの配列からハッシュキーを変更するにはどうすればよいですか?

  2. 2

    ハッシュのルビー配列を単一のハッシュに変換するにはどうすればよいですか?

  3. 3

    ルビーのハッシュ値でハッシュの配列内を検索するにはどうすればよいですか?

  4. 4

    PowerShellのハッシュ内の既存の配列に値を追加しますか?

  5. 5

    ルビーの配列のハッシュを変換する

  6. 6

    キーなしで既存のハッシュに値を追加する方法

  7. 7

    Perl、ハッシュの配列内のハッシュを削除する方法は?

  8. 8

    ルビーの同じキーに基づいてハッシュの配列をマージする方法は?

  9. 9

    ルビーこの配列のハッシュをソートする方法

  10. 10

    postgresでハッシュの配列からキーを表示する方法は?

  11. 11

    配列からのキーでハッシュを初期化する方法は?

  12. 12

    ハッシュルビー内の配列の合計を計算する方法

  13. 13

    ルビーのハッシュの配列に値を更新する効率的な方法は?

  14. 14

    共通のキーによってハッシュの配列を複数の配列に分割する簡単な方法はルビーにありますか?

  15. 15

    Pythonの暗号ハッシュとハッシュテーブルハッシュの違いは何ですか?

  16. 16

    配列のハッシュキーにプッシュする方法は?

  17. 17

    Grapeでハッシュの配列を定義する方法は?

  18. 18

    Ruby配列のハッシュをループする方法

  19. 19

    Perlでハッシュをハッシュの配列に変換する

  20. 20

    Rust のハッシュ テーブルの文字列値に追加する方法は?

  21. 21

    ハッシュの配列内でハッシュをマージする

  22. 22

    配列値に基づいてハッシュの配列からハッシュを抽出する方法

  23. 23

    ハッシュの配列で、1つのハッシュからすべてのキーを検索する

  24. 24

    ハッシュテーブルをファイルに保存する最良の方法は何ですか?

  25. 25

    ルビーハッシュを特定の形式の文字列に変換する方法

  26. 26

    複数のファイルの既存のハッシュスクリプトにハッシュを追加する

  27. 27

    Perlハッシュハッシュの最終レベルの値を1つの配列に取得するにはどうすればよいですか?

  28. 28

    参照なしで配列のハッシュに配列を追加する

  29. 29

    ハッシュの配列に新しいハッシュを追加するにはどうすればよいですか?

ホットタグ

アーカイブ