ハッシュのキーと値のペアの値を配列にプッシュします

user3423407

3つの列で構成されるcsvファイルから値を割り当てる配列があります

CSVファイル:

Name,Age,City
Joe,30,NYC
Mary,32,Washington
.
.
.
n number of lines

だから私はこれを私のperlスクリプトに渡し、これらの変数を割り当てます

($name,$age,$city) = split(",",$_,3);
push @array, "$name,$age,$city";

ただし、2つのハッシュにキーと値のペアがあり、この配列にプッシュしたいと思います。

これはハッシュです

%hash  = ('NYC' => NYC, 'Washington' => Virginia, and so on)
%hash2 = ('NYC' => US, 'Washington' => US, 'London' => UK, and so on)

配列にStateとCountryの2つの列を追加して、次のようになります。

Name,Age,City,State,Country
Joe,30,NYC,NY,US
Mary,32,Washington,Virginia,US
.
.
.
n number of lines

switchステートメントで試しました

 switch($city){
            case "NYC"         {$state = "NY"; $country = "US";
                       push @array, "$name,$age,$city,$state,$country";
                               }
               }

しかし、それは機能しませんでした。

助けていただければ幸いです

家賃

まず、配列に配置するのは、すべて二重引用符で囲まれた単一の文字列です。これはあなたが意図したことかもしれませんが、私はこれを一度に1ステップずつ実行したいと思います。

pushあなただけ追加するすべての変数を一覧表示することができますので、その場合には何の引用は一切必要ありません、リストを取ります。「州」と「国」を追加するには、キーのハッシュから値を引き出すだけです。$city

push @array, $name, $age, $city, $hash{$city}, $hash2{$city};

しかし、この配列がさらにレコードを取得することを意図している場合、どのようにそれらを区別しますか?1つの方法は、毎回配列参照を追加することです。

push @array, [ $name, $age, $city, $hash{$city}, $hash2{$city} ];

ここで、中括弧[ ]は匿名配列を作成し、それへの参照を返します。これはスカラーであるため、それ自体が配列要素になる可能性があります。$array[$index]->[0]名前(または省略形$array[$index][0])のようにこれにインデックスを付ける必要があるため、個々のアイテムの取得は適切ではありませんしかし、ほとんどの場合、それらすべてが必要な場合は、完璧です。my @data = @{ $array[$index] };

別の方法は、代わりに、{ }たとえば次のようなを使用してハッシュ参照を追加することです。

push @array, { name => $name, age => $age, city => $city, 
      state => $hash{$city}, country => $hash2{$city} };

ここで、値を$array[$index]->{name}(etc)として取得できますこれは、個々のコンポーネントの操作に明らかに適しています。

別の方法は、実際に各レコードに文字列を追加することです。次に、引用符で囲まれたハッシュ値を追加します

push @array, "$name,$age,$city,$hash{$city},$hash2{$city}";

ハッシュ値は二重引用符で囲まれた文字列内で評価できるためです。

いずれにせよ、スイッチをオンにする必要はありません。これが$cityまさにハッシュの目的であり、値をキーに関連付けて、そのキーの値を直接取得できるようにします。


追加したいのですが、これらのハッシュにもっと有益な方法で名前を付けるのはどうですか?

例えば

my %state   = (NYC => 'NY', Washington => 'Virginia');            # ...
my %country = (NYC => 'US', Washington => 'US', London => 'UK');  # ...

そして、あなたははるかに明確になります

push @records, "$name,$age,$city,$state{$city},$country{$city}";

配列名も変更しました。

ネーミングに関する補足。ハッシュ名が単数(「states」ではなく「state」)である規則を使用しましたが、それは単一の名前付きアイテム$state{$city}(state-for-city)を参照するという理論的根拠があります。適切に選択された変数名を使用すると、これが何を表すかは明らかです。ただし、これはいかなる種類の「ルール」でもありません。複数形も同様に使用されます(「状態」ではなく「状態」)。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

JSON配列を配列のキーと値のペアにプッシュします

分類Dev

ハッシュの配列:キーと値のペアの存在を検証しますか?

分類Dev

配列をハッシュマップ(キーと値のペア)に変換するjavascript

分類Dev

2番目の配列の部分文字列に応じて、最初の配列のハッシュにキーと値のペアを追加します

分類Dev

ハッシュキーと値のペアを再帰的に出力します

分類Dev

キーと値のペアを配列にプッシュする

分類Dev

Perl:キーと値の配列をハッシュに変換します

分類Dev

ネストされたハッシュの配列を、キーと値のペアのフラット化された配列に減らします

分類Dev

キーと値のペアである文字列をRubyのハッシュに変換します

分類Dev

生の値のキーと値のペアのハッシュマップJavaからキーと値のペアをフェッチします

分類Dev

ハッシュマップにファイルからキーと値のペアを追加します

分類Dev

キーに基づいてハッシュのルビーマージ配列を作成し、キーと値のペアの数で並べ替えます

分類Dev

ハッシュの他の配列からキーと値を追加します

分類Dev

Perl:ハッシュの2つの配列の値を組み合わせ、2番目の配列の値を出力ハッシュのキーにします

分類Dev

ruby-キーと配列の値のペアを含むハッシュを反復処理し、各値を反復処理します

分類Dev

キーと値のペアを含むオブジェクトを値としてJava / Androidのハッシュマップに渡します

分類Dev

ハッシュ内の配列内の値のキーを検索します

分類Dev

Rubyのハッシュにキーと値のペアを追加する

分類Dev

50mbの文字列型のキーと値のペアのデータをJavaハッシュマップに保存できますか?

分類Dev

配列要素をハッシュキーと比較し、ハッシュ値を配列に追加します

分類Dev

ハッシュ配列から特定のキーの値を取得します

分類Dev

Perlハッシュでキーと値のペアのリストをプッシュする

分類Dev

新しいキーと値のペアをjsonにプッシュする

分類Dev

事業年ごとの `:date`値に従ってハッシュの配列をグループ化します

分類Dev

ハッシュマップに配列リストの値を出力します

分類Dev

他のハッシュ配列のキー値に基づいて、ハッシュの1つの配列を更新します

分類Dev

キーと値のペアを直接プッシュしてperlのハッシュにすることは可能ですか?

分類Dev

この「ハッシュのような」文字列をキーと値のペアに変換する方法

分類Dev

$ .eachループの配列でキーと値のペアをプッシュできません

Related 関連記事

  1. 1

    JSON配列を配列のキーと値のペアにプッシュします

  2. 2

    ハッシュの配列:キーと値のペアの存在を検証しますか?

  3. 3

    配列をハッシュマップ(キーと値のペア)に変換するjavascript

  4. 4

    2番目の配列の部分文字列に応じて、最初の配列のハッシュにキーと値のペアを追加します

  5. 5

    ハッシュキーと値のペアを再帰的に出力します

  6. 6

    キーと値のペアを配列にプッシュする

  7. 7

    Perl:キーと値の配列をハッシュに変換します

  8. 8

    ネストされたハッシュの配列を、キーと値のペアのフラット化された配列に減らします

  9. 9

    キーと値のペアである文字列をRubyのハッシュに変換します

  10. 10

    生の値のキーと値のペアのハッシュマップJavaからキーと値のペアをフェッチします

  11. 11

    ハッシュマップにファイルからキーと値のペアを追加します

  12. 12

    キーに基づいてハッシュのルビーマージ配列を作成し、キーと値のペアの数で並べ替えます

  13. 13

    ハッシュの他の配列からキーと値を追加します

  14. 14

    Perl:ハッシュの2つの配列の値を組み合わせ、2番目の配列の値を出力ハッシュのキーにします

  15. 15

    ruby-キーと配列の値のペアを含むハッシュを反復処理し、各値を反復処理します

  16. 16

    キーと値のペアを含むオブジェクトを値としてJava / Androidのハッシュマップに渡します

  17. 17

    ハッシュ内の配列内の値のキーを検索します

  18. 18

    Rubyのハッシュにキーと値のペアを追加する

  19. 19

    50mbの文字列型のキーと値のペアのデータをJavaハッシュマップに保存できますか?

  20. 20

    配列要素をハッシュキーと比較し、ハッシュ値を配列に追加します

  21. 21

    ハッシュ配列から特定のキーの値を取得します

  22. 22

    Perlハッシュでキーと値のペアのリストをプッシュする

  23. 23

    新しいキーと値のペアをjsonにプッシュする

  24. 24

    事業年ごとの `:date`値に従ってハッシュの配列をグループ化します

  25. 25

    ハッシュマップに配列リストの値を出力します

  26. 26

    他のハッシュ配列のキー値に基づいて、ハッシュの1つの配列を更新します

  27. 27

    キーと値のペアを直接プッシュしてperlのハッシュにすることは可能ですか?

  28. 28

    この「ハッシュのような」文字列をキーと値のペアに変換する方法

  29. 29

    $ .eachループの配列でキーと値のペアをプッシュできません

ホットタグ

アーカイブ