2016-12-10 6 views
1

私は特定の順序で配列を持っており、配列の奇数番号のエントリをインデックスと偶数の値として持つハッシュを作成したいと考えています。このコードは完全に行いますが、配列から1組の値を除外します。ルビの配列からハッシュを作成する

resolv_hash = Hash[*namerslv_array] 
      puts "values in hash" 
      resolv_hash.each do |key, array| 
      puts "#{key} " + array 
      end 

誰でも助けてください。

答えて

3

私はあなたがしたいと思う:

resolv_hash = namerslv_array.each_slice(2).to_h 

イラスト:

>> array = [1,2,3,4,5,6,7,8,9,0] 
>> array.each_slice(2).to_h 
=> {1=>2, 3=>4, 5=>6, 7=>8, 9=>0} 
+0

動作しますが、それでもペアまたはエントリを逃す...私のコードの出力ができます*ファイル[/etc/resolv.confを(日付まで)作用create_if_missing * aix_etcresolv [ネームサーバ]アクションアレイ ネームサーバに値を追加 192.10.201.1ドメイン abc.aus.century.com nameserve R 176.111.1.1ハッシュ ネームサーバ176.111.1.1で 値 ドメインabc.aus.century.com 私のファイルの内容が ネームサーバ192.10.201.1 ドメインabc.aus.century /etc/resolv.confの 猫です。 com nameserver 176.111.1.1 – ibellinf

+0

ああ!ネームサーバーのキーが重複しているので、その1つを落とす??? – ibellinf

+1

はい、そうです。キーは定義上ユニークなので、既存のキーでHashに要素を追加しようとすると、代わりにそのキーの値が新しい値に置き換えられます。重複したキー/最初の値が必要な場合は、 'namerslv_array.each_slice(2)'を使用し、データをハッシュではなく配列のペアとして保存することができます。 – moveson

関連する問題