- トップページ
- 特集PC技術
- Pythonを学ぼう
- 第14回 辞書の作成
Pythonを学ぼう
第14回 辞書の作成
1.辞書とは
辞書(Dictionary)とは、キーと値を対にした集合を表します。
具体的には、次のように、"{}"括弧の中に"キー:値"をカンマで区切って記述します。
{キー1:値1, キー2:値2, キー3:値3, ・・・}
辞書には次の特徴があります。
-
キーには、変更不可なオブジェクトを指定すること。
ただし、変更不可なオブジェクトでも、変更可能なオブジェクトを含む場合は指定できない。 - 値はどのような型でも指定できる。
2.直接記述して作成
キーと値を直接記述して、辞書を作成します。
次のプログラムを見てください。
# coding: utf-8 # 辞書の作成 a = {'a':1, 'b':2} print(a) # 空の辞書を作成 b = {} print(b) # 変更可能なオブジェクトをキーに指定した場合 c = {[1, 2]:3} print(c) |
実行結果
{'a': 1, 'b': 2}
{}
Traceback (most recent call last):
:
TypeError: unhashable type: 'list'
変更可能なオブジェクトをキーに指定すると、"TypeError"になります。
3.シーケンスから作成
構文
dict.fromkeys(シーケンス)
dict.fromkeys(シーケンス, デフォルト値)
上記の構文を使用すると、シーケンスの各要素をキーにして辞書を作成します。
キーと対になる値は、すべてデフォルト値となります。
デフォルト値を指定しない場合は、Noneとなります。
次のプログラムを見てください。
# coding: utf-8 list = ['a', 'b'] # デフォルト値を指定しない場合 a = dict.fromkeys(list) print(a) # デフォルト値を指定した場合 b = dict.fromkeys(list, 1) print(b) |
実行結果
{'a': None, 'b': None}
{'a': 1, 'b': 1}
4.Javaとの比較
Javaのソースコードとの比較をします。
Pythonの辞書の機能は、Javaでは、java.util.HashMapクラスに似ているため、
このクラスとの比較をします。
Javaを知っている方は参考にしてください。
Python | Java |
---|---|
# coding: utf-8 # 空の辞書を作成 a = {} print(a) # 辞書{'a':1, 'b':'c'}の作成 b = {'a':1, 'b':'c'} print(b) |
import java.util.HashMap; public class Java14 { public static void main(String[] args) { // 空のマップを作成 HashMap a = new HashMap(); System.out.println(a); // マップ("a"と1, "b"と"c"の対)の作成 HashMap b = new HashMap(); b.put("a", new Integer(1)); b.put("b", "c"); System.out.println(b); } } |
実行結果には違いがありますが、キーと値を対に指定していることには変わりありません。
java.util.HashMapクラスは、空のマップを作成した後にキーと値を指定する必要があります。
なお、Javaで数値と文字列などを組み合わせてマップを作成できるのは、Java1.4までです。
Java1.5以降だと、Generics機能の導入により、数値と文字列などを組み合わせてマップを作成できません。
コメントの投稿
トラックバックURL
http://www.isl.ne.jp/cgi-bin/mt/mt-tb.cgi/1761