人生苦短,我选Pythonpython
前文传送门git
小白学 Python(1):开篇github
(若是是来看表情包的,能够退出去了,本篇无表情包)
字典提供了不少内置方法对字典进行操控。
老规矩,一边看代码一边介绍。
做用: 返回一个迭代器,可使用 list() 来转换为列表,该列表包含全部的 key。
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'>
做用: 返回一个迭代器,可使用 list() 来转换为列表,该列表包含全部的 value 。
print(dict1.values()) print(list(dict1.values())) print(type(list(dict1.values())))
结果以下:
dict_values(['geekdigging', 2]) ['geekdigging', 2] <class 'list'>
做用: 以列表返回可遍历的(键, 值) 元组数组。
print(dict1.items()) print(list(dict1.items())) print(type(list(dict1.items())))
结果以下:
dict_items([('name', 'geekdigging'), ('age', 2)]) [('name', 'geekdigging'), ('age', 2)] <class 'list'>
做用: 返回指定键的值,若是值不在字典中返回 default(None) 值。
print(dict1.get('name')) print(dict1.get('geekdigging'))
结果以下:
geekdigging None
由于 geekdigging
并非字典中的 key ,因此返回了默认值 None 。
做用: 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。
print(dict1.pop('age')) print(dict1)
结果以下:
2 {'name': 'geekdigging'}
做用: 和get()相似, 但若是键不存在于字典中,将会添加键并将值设为 default 。
dict1.setdefault('age') print(dict1)
结果以下:
{'name': 'geekdigging', 'age': None}
做用: 把字典 dict2 的键/值对更新到 dict 里。
dict2 = {'sex': 'male'} dict1.update(dict2) print(dict1)
结果以下:
{'name': 'geekdigging', 'age': None, 'sex': 'male'}
做用: 删除字典内全部元素。
注意: 删除字典内全部元素,并不是删除字典。
dict2.clear() print(dict2)
结果以下:
{}
做用: 返回一个字典的浅复制。
注意: 这里的 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 上,方便你们取用。