详解Python中的Dict 2
目录
- dict 的元素定位(键/值定位)和遍历
- dict的复制(拷贝)
- 总结
学委前面展示dict的概念和增删查改!这次我们把其他函数介绍补充了。
dict 的元素定位(键/值定位)和遍历
dict这种对象我们可以通过 keys() 获取所有的键的列表;
dict这种对象我们可以通过 values() 获取所有的值的列表.
这样有列表我们可以遍历整个dict对象。
但是更多使用下面的风格:
mydict = { 'name': 'leixuewei', 'date': '20211104' } print("遍历字典-----开始") for k, v in mydict.items(): print("key[%s] = value[%s]" % (k, v)) # 直接打印 praHXgLzDnBint("遍历字典-----结束")
这几行代码是可以直接复制运行。
下面学委准备了更加全面的代码,展示了获取key/value和遍历操作等:
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/11/3 11:34 下午 # @Author : LeiXueWei # @CSDN/Juejin/Wechat: 雷学委 # @XueWeiTag: CodingDemo # @File : dict_demo3.py # @Project : hello # 比如学委的信息作为一个字典 info_dict = dict() info_dict['name'] = 'LEI_XUE_WEI' # 或者改为 'levin' info_dict['blogs'] = '93' # 目前发表了93个博客文字。 info_dict['gongzhong_hao'] = '【雷学委】' # 欢迎过来关注支持 info_dict['meta-data'] = dict() print("包含特定key ?%s" % ('gongzhong_hao' in info_dict)) print('所有键的列表:%s ' % info_dict.keys()) priwww.cppcns.comnt('所有值的列表:%s ' % info_dict.values()) print('获取key对应的值:', info_dict['namewww.cppcns.com']) # 获取但是不设置到info_dict内 print('获取key DemoKey 对应的值:', info_dict.get('DemoKey', '匿名用户雷学委')) # print('获取key对应的值:', info_dict['DemoKey']) #这句会抛出异常:KeyError: 'DemoKey' # 如果没有某个key,进行设置默认值并返回 print('获取key name对应的值:', info_dict.setdefault('name', '匿名用户雷学委')) print('获取key D编程客栈emoKey 对应的值:', info_dict.setdefault('DemoKey', '匿名用户雷学委')) print('获取key DemoKey 对应的值:', info_dict['DemoKey']) print("遍历字典-----开始") for key, value in info_dict.items(): print("\tkey[%s] = value[%s]" % (key, value)) print("遍历字典-----结束") info_dict.clear() # 清空整个字典对象
效果如下:
这些操作都是比较基础,但是必须随手就来的,所以必须敲熟了。
dict的复制(拷贝)
字典的复制可以通过copy函数来实现,但是它是浅拷贝,也就是拷贝了但不完全拷贝
简单来说就是拷贝key,但是新字典的值还是沿用旧字典的值的引用。
这里也顺带提一提fromkeys函数,这个创建的新字典,只照搬了key列表,新字典内所有值都是空的。
说这么多,我们看看字典的代码示例:
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/11/3 11:34 下午 # @Author : LeiXueWei # @CSDN/Juejin/Wechat: 雷学委 # @XueWeiTag: CodingDemo # @File : dict_demo4.py # @Project : hello '''dict的拷贝问题''' # 比如学委的信息作为一个字典 info_dict = dict() info_dict['name'] = 'LEI_XUE_WEI' # 或者改为 'levin' info_dict['blogs'] = '93' # 目前发表了93个博客文字。 info_dict['gongzhong_hao'] = '【雷学委】' # 欢迎过来关注支持 info_dict['meta-data'] = dict() # 选择指定key列表局部拷贝 keys_copied_dict = info_dict.fromkeys(['name', 'blogs', 'zone']) print("keys_copied_dict :", keys_copied_dict) # 浅拷贝//Shadow Copy: 全拷贝但不完全拷贝 copied_dict = info_dict.copy() print("copied_dict :", copied_dict) shadow_copied_dict = info_dict.copy() print('shadow_copied_dict:', shadow_copied_dict) ## 雷学委提示http://www.cppcns.com:下面一行代码修改了‘meta-data'这个key对应的值,我们并没有直接修改shadow_copied_dict info_dict['meta-data']['date'] = '04 Nov 2021' print('info_dict:', info_dict) print('shadow_copied_dict:', shadow_copied_dict) # 这里输出看到变化也传递给了 shadow_copied_dict print("*"*16 + "清空info_dict") info_dict.clear() print('info_dict:', info_dict) # clear 清空元素后 打印info_dict print('shadow_copied_dict:', shadow_copied_dict) # clear 清空元素后打印 copied_dict
效果如下:
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!
精彩评论