私はhash1の値とhash2の値との交差点を作成しようとしています。これらの値が同じキーを共有しているとします。ここまでは私のコードです。私は2つのハッシュ - > dataとdata1を生成することができます。だから、2つの独立したハッシュのキーが等しい場合、2つのキーの値の共通部分を作成します。 Ruby
#!/usr/bin/env ruby
require 'pp'
require 'set'
data = {}
File.read(ARGV[0]).each do |l|
l.chomp!
key, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10, value11, value12 = l.split(/\s+/)
data[key] ||= {}
values = [value1, value2, value3, value4, value5, value6, value7, value8, value9, value10, value11, value12]
data[key] = values.compact!
end
data1 = {}
File.read(ARGV[1]).each do |l|
l.chomp!
value = l.split(/\s+/)
data1[value[0]] ||= {}
data1[value[0]] = [value]
end
、私の主な目標はHASH1で各キーのためである、そうでない場合はHASH1からこれらの値を削除し、またHASH2でその同じキーで存在しているだけで、これらの値を保持します。私は、Hash1に存在しないHash2に存在するキーについては何も考慮していない。
"&"と "set"を使用して配列を交差させることができますが、これまでのスクリプトでこれを達成することはできませんでした。
アドバイスは素晴らしいでしょう。ありがとう。
テオの場合:
はい。
hash1 {alpha:[a、b、c、d、e]、bravo:[f、g、h、i、j]、チャーリー:[k、l、m、n、o]、デルタ:[p 、R]}
HASH2 {アルファ:[、C、Q、z]は、ブラボー:[Z、X]、チャーリー:[K、L、M、N]}
したがって、交差点このように見えるでしょう。
hash3 {アルファ:[C]、ブラボー:[ゼロ]、チャーリー:[K、L、M、N]} 2つのハッシュの規則的な交差を
hash2に存在しないhash1のキーはどうすればよいですか? –
あなたが望むものを解読することは容易ではありません。 2つのハッシュがどのように見えるか、そして何を得たいかの簡単な例を教えてください。 – Theo
はい、その可能性を含めるのを忘れました。その場合、hash1のこれらのキーは削除する必要があります。 – user511038