この章ではディクショナリから「キーだけ」もしくは「値だけ」を取り出す方法について説明します。
では例をみてみましょう。 「キーだけ」をすべて取り出したい場合はkeysメソッドを使って以下の構文を使います。
取り出されたデータはリストで返されます。 「値だけ」をすべて取り出したい場合はvaluesメソッドを使って以下の構文を使います。
取り出されたデータはリストで返されます。 上の例では取り出したものを変数に入れない方法と変数に入れる方法の2種類で書いていますが、取り出したものを何かに使用したい場合には変数に入れてください。
結果は次の通りです。 先ほどの例は「キーだけ」もしくは「値だけ」を取り出しましたが、キーと値を両方取得するにはitemsメソッドを使用します。
では例をみてみましょう。 ディクショナリのキーと値を両方取得したい場合は以下の構文を使います。 itemsメソッドの戻り値はリストとして取得しますが、リストの各要素はタプルになります。
結果は次の通りです。
タグ: keys
ハッシュのその他の知識を得よう
この章では今まで説明した事以外のハッシュの知識について説明します。
初めに今までとは違ったキーと値の設定方法について説明します。
今までは以下のように記述すればハッシュの要素を追加できました。 この他にもという構文でキーと値を追加することが出来ます
では例をみてみましょう。 このように書くことでハッシュにという新たな要素が加わります。
上書きしたい場合は以下の通り、キーに対する値に他の値を設定します。 結果は以下の通りです。 次はハッシュの要素が何個あるかを確認する方法について説明します。
では例をみてみましょう。 この構文でハッシュの要素数を取得できます。
結果は以下の通りです。
次はハッシュの要素をすべて出力する方法について説明します。
では例をみてみましょう。 ハッシュの要素をブロック内のにそれぞれセットして、出力します。
例えば例の中のaにはキーが入り、bには値が入ります。
この構文で書けばすべてのハッシュの要素を出力することが出来ます。
結果は以下の通りです。 キーと値の両方を出力したい時は前の例の構文でもいいですが、キーだけ、もしくは値だけを出力したい場合について次の例で説明します。
では例をみてみましょう。 キーだけを出力したい時にはを使い、値だけを出力したい時にはを使います。
結果は以下の通りです。
次はハッシュの全てのキーを配列に変える方法について説明します。
では例をみてみましょう。
この構文でキーだけを配列にすることが出来ます。
この例ではkがその配列になります。
結果は次の通りです。
次はハッシュの全ての値を配列に変える方法について説明します。
では例をみてみましょう。 この構文で値だけを配列にすることが出来ます。
この例ではkがその配列になります。
結果は以下の通りです。
次はキーと値を「配列の配列」に変える方法です。
では例をみてみましょう。 結果は以下の通りです。
この構文でキーと値を配列の配列にすることが出来ます。
配列の配列とはどのような形式であるのかを説明します。
文字通り、配列の配列は配列の中に配列を入れる形式です。
この例の配列の配列は以下のようになっています。 =>外側の[ ]の中にさらに配列が入っている形式になります。
では細かく分解してみます。
ハッシュに関する関数を知ろう
この章ではハッシュの要素に対して、様々な操作をする関数について説明します。
以下が主な関数です。 では例をみてみましょう。 ではkeysについて説明します。 ハッシュに含まれるキーだけを取り出すにはkeysを使用します。
keysはハッシュに含まれるすべてのキーをリストにして返します。
返されるキーには順番はなく、ランダムにリストに格納されます。
上の例では2つの方法でキーを出力しています。
1つ目の方法はforeachです。
foreachは配列の要素を取り出すのに使いますが、ここではハッシュに含まれるすべてのキーのリストを取り出すのに使います。
2つ目の方法はキーのリストを@keyに入れて、printで出力しています。
では次の例をみてみましょう。 ハッシュに含まれる値だけを取り出すにはvaluesを使用します。valuesはハッシュに含まれるすべての値をリストにして返します。
返される値には順番はなくランダムにリストに格納されます。
先ほどの例では2つの方法で値を出力しています。
1つ目はforeachです。
foreachは配列の要素を取り出すのに使いますが、ここではハッシュにあるすべての値を取り出すのに使います。
2つ目は値のリストを@valueに入れて、printで出力しています。
次は配列の章でも説明したsort関数について説明しますが、詳しくは配列の章のsort関数の説明を参考にしてください。 では例をみてみましょう。 キーを文字列で比較する場合にはcmpを使用します。
キーを数値として比較したい場合にはを使用します。
次はハッシュの値をソートする方法について説明します。
では例をみてみましょう。
値を数値で比較するので、を使用します。
次はeach関数について説明します。 each関数はハッシュに含まれるキーと値のペアを取り出して、キーと値のペアを返します。
ハッシュの最初のキーと値を取り出しています。
ハッシュは要素間の順番がないので、初めのが出力されるわけではないので注意してください。
では例をみてみましょう。
次はexists関数について説明します。
ハッシュの中に指定したキーが存在するかを確認します。
存在する場合はTRUEを返し、存在していなければFALSEを返します。
キーだけを調べているので、次の例のように値にデータが入っていなくてもTRUEを返します。
結果は「定義されています」です。
すべてのハッシュのキーに対して、存在するのかチェックしたい場合にはforeach文と一緒にif文でチェックを行います。
次はdefined関数について説明します。
defined関数は値が定義されている場合はTRUEを、定義されていない場合はFALSEを返します。
値がカラであるならばFALSEになります。
では例をみてみましょう。
この例ではの値がカラです。
その場合にはFALSEを返します。
FALSEなのでが実行されます。
次はdelete関数について説明します。
delete関数は引数に指定したキーと値を削除します。
戻り値は削除が出来たのならばその削除した値になります。 このようにprintで %nameの要素を出力することが出来ますが、ハッシュをダブルクォートで囲まないでください。
次はハッシュを初期化する方法について説明します。
ハッシュの要素を初期化するには、上の例のように空のリストを代入します。
ハッシュにカラのリストを代入することにより、ハッシュの要素がすべて削除されます。
「%name=();」でハッシュの要素を初期化したので、上の例を出力しようとしても何も出力されません。