特集PC技術

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

サイト内検索

twitterTwitter

最新ブログ記事

2015年06月13日

JavaScriptの情報室

4冊目 ハイブリッドアプリが作れる。tabris.js

2014年10月16日

C++言語学習録

第3回 ファイルを分割してみよう

2014年10月09日

C++言語学習録

第2回 オブジェクト指向の復習

2014年10月02日

C++言語学習録

第1回 C++の開発環境を整える

2014年09月25日

Swiftを試してみようなう。

第4回 Swiftでクラスを使うなう。

ISL 情報戦略研究所

pagetopこのページの先頭へ戻る