2013年3月8日金曜日

開発環境

『初めてのPython 第3版』(Mark Lutz 著、夏目 大 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-393-7) のIV部(関数)のまとめ演習5.(ディクショナリのコピー)を解いてみる。

その他参考書籍

5.(ディクショナリのコピー)

コード(BBEdit)

sample.py

#!/usr/bin/env python3.3
#-*- coding: utf-8 -*-

import copy

# トップレベルのみ
def copyDict(d):
    res = {}
    for k, v in d.items():
        res[k] = v
    return res

d1 = {'a':1,'b':2}
d2 = copyDict(d1)
d3 = d1.copy()
print(d1, d2, d3, sep="\n")

# トップレベルのみのコピー(copyDict関数、あるいはディクショナリのcopy)と
# copyモジュールのdeepcopyを使った場合(ネストされたのまでコピー)の違いを確認
d4 = {'a':{'b':1},'c':2}
d5 = copyDict(d4)
d6 = d4.copy()
d7 = copy.deepcopy(d4)
print(d4, d5, d6, d7, sep="\n")
d4['a']['b'] = 100
print(d4, d5, d6, d7, sep="\n")

入出力結果(Terminal)

$ ./sample.py
{'b': 2, 'a': 1}
{'b': 2, 'a': 1}
{'b': 2, 'a': 1}
{'c': 2, 'a': {'b': 1}}
{'c': 2, 'a': {'b': 1}}
{'c': 2, 'a': {'b': 1}}
{'c': 2, 'a': {'b': 1}}
{'c': 2, 'a': {'b': 100}}
{'c': 2, 'a': {'b': 100}}
{'c': 2, 'a': {'b': 100}}
{'c': 2, 'a': {'b': 1}}
$

0 コメント:

コメントを投稿