開発環境
- OS X Lion - Apple(OS)
- BBEdit - Bare Bones Software, Inc.(Text Editor)
- プログラミング言語: Python
『初めての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 コメント:
コメントを投稿