人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变量基础操作 小白学 Python(5):基础运算符(上) 小白学 Python(6):基础运算符(下) 小白学 Python(7):基础流程控制(上) 小白学 Python(8):基础流程控制(下) 小白学 Python(9):基础数据结构(列表)(上) 小白学 Python(10):基础数据结构(列表)(下) 小白学 Python(11):基础数据结构(元组) 小白学 Python(12):基础数据结构(字典)(上) 字典内置函数 & 方法 (如果是来看表情包的,可以退出去了,本篇无表情包) 字典提供了很多内置方法对字典进行操控。 老规矩,一边看代码一边介绍。 dict.keys() 作用: 返回一个迭代器,可以使用 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'] dict.values() 作用: 返回一个迭代器,可以使用 list() 来转换为列表,该列表包含所有的 value 。 print(dict1.values()) print(list(dict1.values())) print(type(list(dict1.values()))) 结果如下: dict_values(['geekdigging', 2]) ['geekdigging', 2] dict.items() 作用: 以列表返回可遍历的(键, 值) 元组数组。 print(dict1.items()) print(list(dict1.items())) print(type(list(dict1.items()))) 结果如下: dict_items([('name', 'geekdigging'), ('age', 2)]) [('name', 'geekdigging'), ('age', 2)] dict.get(key, default=None) 作用: 返回指定键的值,如果值不在字典中返回 default(None) 值。 print(dict1.get('name')) print(dict1.get('geekdigging')) 结果如下: geekdigging None 因为 geekdigging 并不是字典中的 key ,所以返回了默认值 None 。 dict.pop(key[,default]) 作用: 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 print(dict1.pop('age')) print(dict1) 结果如下: 2 {'name': 'geekdigging'} dict.setdefault(key, default=None) 作用: 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为 default 。 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 扫描二维码关注「极客挖掘机」公众号! 作者:极客挖掘机 定期发表作者的思考:技术、产品、运营、自我提升等。 本文版权归作者极客挖掘机和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 如果您觉得作者的文章对您有帮助,就来作者个人小站逛逛吧:极客挖掘机 https://www.cnblogs.com/babycomeon/p/11790301.html