BACK

HOOPSII MOBILE

HOME

第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機能の導入により、数値と文字列などを組み合わせてマップを作成できません。

Copyright (C) 2011 ほぷしぃ. All Rights Reserved.