SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

よろずプログラマーのためのPython導入ガイド

Java meets Python - 第5回 二分木と辞書

よろずプログラマーのためのPython導入ガイド (7)

組み込み関数 dict()

 dict型のインスタンス(辞書)を生成するには、組み込み関数dictを利用すると便利です。

>>> dict()
{}

 関数dictの引数を省略すると、空の辞書 {} を生成します。

キーワード引数を使うと

>>> dict(a=1,b=2,c=3)
{'a': 1, 'c': 3, 'b': 2}

 キーワード引数を指定すると、各引数に対応する要素対(キーと値)を列挙した辞書を生成します。すると、キーワード引数c=3をもとにして、文字列キー'c'に整数値 3 が対応する、新たな要素対'c':3が辞書に登録されます。

 辞書に登録した順序には意味がないので、その出力結果も順不同です。そもそも、実引数を指定する順序を気にしなくても良いのが、キーワード引数を使う理由の一つです。そこで、辞書を作成するときに「キーワード引数を使いたい」と考えるのは当然です。ただし、指定したキーワードは文字列として登録されるので、汎用性がなく、任意(文字列以外)のキーを扱いたいときには、別のアプローチが必要になります。

タプルを使うと

>>> dict([("a",1),("b",2),("c",3)])
{'a': 1, 'c': 3, 'b': 2}

 2つの要素を持つタプルを列挙したリストを引数に指定すると、各タプルに対応する要素対(キーと値)を列挙した辞書を生成します。すると、タプル("c",3)をもとにして、新たな要素対'c':3が辞書に登録されます。

内包を使うと

>>> [e for e in enumerate("def")]
[(0, 'd'), (1, 'e'), (2, 'f')]

 enumerate型のインスタンス(列挙)を生成するには、組み込み関数enumerateを利用すると便利です。シーケンス型の引数に含まれる各要素に対して、その添字と各要素を持つタプルを列挙したリストを生成します。各添字には、先頭からのオフセット値(0 から始まる整数値)が順に割り当てられます。

 リスト内のforに続く制御変数eには、まず、0番目の(長さ1の)文字列'd'に対して、タプル(0,'d')が割り当てられます。さらに、各文字ごとに同様のタプルが生成されるので、変数eを介して、これらを順にアクセスできます。

>>> dict([(v,k) for k,v in enumerate("def")])
{'e': 1, 'd': 0, 'f': 2}

 forに続く制御変数k,vには、オフセット値と要素が順に割り当てられます。そこで、これらの順序を入れ替えると、文字列キーと整数値を要素対とする辞書を生成できます。すると、タプル(0,'d')をもとにして、新たな要素対 'd':0 が辞書に登録されます。

>>> dict([(e,ord(e)) for e in "ABC"])
{'A': 65, 'C': 67, 'B': 66}

 ここでは、文字列キーeと ASCII値ord(e)を要素対とする辞書を生成します。すると、タプル'C',ord('C')をもとにして、新たな要素対'C':67が辞書に登録されます。

乱数:モジュール random

 モジュールrandomは、乱数を扱うのに便利なサービスを提供します。

>>> from random import *
>>> random
<built-in method random of Random object at 0x1889010>
>>> random()
0.79616733159224029
>>> random()
0.16592115650929051

 関数randomを利用すると、任意の乱数が得られます。ここでは、random()を呼び出すたびに、異なる乱数が得られるのが分かります。

>>> [int(random()*100) for e in range(5)]
[80, 49, 5, 93, 23]

 組み込み関数intを利用すると、指定した引数に相当する整数が得られます。ここでは、生成した乱数をもとに、2桁の整数(0~99)が得られるのが分かります。

>>> [randint(0,99) for e in range(5)]
[99, 23, 69, 81, 17]

 関数randintを利用すると、引数(下限,上限)に指定した範囲内の整数が得られます。この方法でも、2桁の乱数(0~99)が得られるのが分かります。

次のページ
辞書:キーと値

この記事は参考になりましたか?

よろずプログラマーのためのPython導入ガイド連載記事一覧

もっと読む

この記事の著者

小泉ひよ子とタマゴ倶楽部(コイズミヒヨコトタマゴクラブ)

http://tamago-club.cocolog-nifty.com/「楽しくなければ仕事じゃない」が私たちのモットー。99%の苦悩の連続も、1%の成功に報われます。だからこそ、この仕事が楽しくて仕方がないのです。楽をするための努力なら惜しみません。何もせず楽をしているのと、努力をしたから楽ができるのと...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

本間 こりす(ホンマ コリス)

新人です。他のみなさんに支えられながら、マイペースで頑張ります。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/1803 2008/04/04 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー