ホワイトサイエンスのPython(13):基本的なデータ構造(辞書)(下)

人生は短いですが、私は、Pythonを選びました

前述のポータル

オープニング:ホワイトは、Python(1)学びます

ホワイトサイエンスパイソン(2):基本的なデータ型(上)

ホワイトサイエンスパイソン(3):基本的なデータ型(下)

ホワイトサイエンスパイソン(4):変数の基本操作

ホワイトサイエンスパイソン(5):基本演算子(上)

ホワイトサイエンスパイソン(6):基本演算子(下)

ホワイトサイエンスパイソン(7):ベースのフロー制御(上)

ホワイトサイエンスパイソン(8):フロー制御の基礎(下)

ホワイトサイエンスパイソン(9):基本的なデータ構造(リスト)(A)

ホワイトサイエンスのPython(10):基本的なデータ構造(リスト)(下)

ホワイトサイエンスのPython(11):基本的なデータ構造(タプル)

ホワイトサイエンスのPython(12):基本的なデータ構造(辞書)(​​A)

辞書組み込み関数&方法

(パッケージには、顔の表情を見ている場合、あなたは、道こここの無表情なパッケージを作ることができます)

辞書は、辞書を操作するために、多くの組み込みメソッドを提供します。

コードを見ながら、古いルールは、導入しながら。

dict.keys()

アクション:(イテレータは、リストを使用することができます返しますが)リストを変換し、リストには、すべてのキーが含まれています。

dict1 = {'name': 'geekdigging', 'age': 2}

print(dict1.keys())
print(list(dict1.keys()))
print(type(list(dict1.keys())))

結果は以下の通りであります:

dict_keys(['name', 'age'])
['name', 'age']
<class 'list'>

dict.values()

アクション:(イテレータは、リストを使用することができます返しますが)リストを変換し、リストには、すべての値が含まれています。

print(dict1.values())
print(list(dict1.values()))
print(type(list(dict1.values())))

結果は以下の通りであります:

dict_values(['geekdigging', 2])
['geekdigging', 2]
<class 'list'>

dict.items()

処置:その見返りにリスト(キー、値)タプル配列を横断してもよいです。

print(dict1.items())
print(list(dict1.items()))
print(type(list(dict1.items())))

結果は以下の通りであります:

dict_items([('name', 'geekdigging'), ('age', 2)])
[('name', 'geekdigging'), ('age', 2)]
<class 'list'>

dict.get(キー、デフォルト=なし)

処置:値は辞書を返すのデフォルト(なし)値でない場合は、指定されたキーを返します。

print(dict1.get('name'))
print(dict1.get('geekdigging'))

結果は以下の通りであります:

geekdigging
None

なぜなら  geekdigging ない辞書のキーなので、デフォルト値のNoneを返します。

dict.pop(キー[デフォルト])

処置:キーに対応するキーの値与えられた辞書を削除するには、戻り値が削除されます。キーの値を指定する必要があります。

print(dict1.pop('age'))
print(dict1)

結果は以下の通りであります:

2
{'name': 'geekdigging'}

dict.setdefault(キー、デフォルト=なし)

役割:とGET()が似ていますが、キーが辞書に存在しない場合は、デフォルトのキーと値を追加します。

dict1.setdefault('age')
print(dict1)

結果は以下の通りであります:

{'name': 'geekdigging', 'age': None}

dict.update(dict2)

作用: 把字典 dict2 的键/值对更新到 dict 里。

dict2 = {'sex': 'male'}
dict1.update(dict2)
print(dict1)

结果如下:

{'name': 'geekdigging', 'age': None, 'sex': 'male'}

dict.clear()

作用: 删除字典内所有元素。

注意: 删除字典内所有元素,并非删除字典。

dict2.clear()
print(dict2)

结果如下:

{}

dict.copy()

作用: 返回一个字典的浅复制。

注意: 这里的 copy 是浅 copy ,有编程经验的同学估计理解起来并无难度。无经验的同学且听我慢慢道来,浅拷贝本质上拷贝的是一个引用,并非拷贝了整个内容,举例子的话就好比我有一个苹果,并且浅拷贝了一个给小明,我咬了一口我的苹果,但是小明发现他的苹果也被咬了一口。

dict3 = {'name': 'geekdigging', 'age': [1, 2, 3]}
# 浅拷贝: 引用对象
dict4 = dict3
print(id(dict3))
print(id(dict4))
# 浅拷贝:深拷贝父对象(一级目录),子对象(二级目录)不拷贝,还是引用
dict5 = dict3.copy()
dict3['age'].remove(1)
print(dict3)
print(dict5)
print(id(dict3))
print(id(dict5))

结果如下:

2418990911064
2418990911064
{'name': 'geekdigging', 'age': [2, 3]}
{'name': 'geekdigging', 'age': [2, 3]}
2418990911064
2418991599688

这个示例理解稍有费劲儿,不着急,慢慢品,细品。

如果我想全都深 copy ,怎么做呢?

可以引入 copy 模块实现。

import copy

dict3 = {'name': 'geekdigging', 'age': [1, 2, 3]}
dict6 = copy.deepcopy(dict3)
dict3['age'].remove(1)
print(dict3)
print(dict6)
print(id(dict3))
print(id(dict6))

结果如下:

{'name': 'geekdigging', 'age': [2, 3]}
{'name': 'geekdigging', 'age': [1, 2, 3]}
2418991602168
2418991602008

初次接触的同学,以上两个示例并不好理解,如果在理解上有问题的可以在公众号留言问我。

老生常谈再多 BB 一句,请各位同学亲自动手实践一下示例代码。

示例代码

本系列的所有代码小编都会放在代码管理仓库 Github 和 Gitee 上,方便大家取用。

示例代码-Github

示例代码-Gitee

 

转载声明:本博客由极客挖掘机创作,采用  CC BY 3.0 CN 许可协议。可自由转载、引用,但需署名作者且注明文章出处。

おすすめ

転載: www.cnblogs.com/aliswell2king/p/11753940.html