Python字典操作详解:复制、遍历与fromkeys函数使用示例
mydict = {
'name': 'leixuewei',
'date': '20211104'
}
print("遍历字典-----开始")
for k, v in mydict.items():
打印("key[" + k + "] = value[" + v + "]") # 直接打印
print("遍历字典-----结束")

这几行代码是可以直接复制运行。
下面学委准备了更全面的代码,此代码展示了获取 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 的名称被赋值为 'LEI_XUE_WEI' ,或者也可以改为 'levin' 。
目前发表的博客文字数量为 93 个。 目前已发表 93 个博客文字。 93 个博客文字已被发表。 发表的博客文字数量是 93 个。 已发表的博客文字有 93 个。 目前有 93 个博客文字被发表了。 93 个就是目前发表的博客文字数量。 目前所发表的博客文字为 93 个。 93 个便是目前已发表的博客文字。 目前的博客文字发表数量是 93 个。 已发表的 93 个为博客文字。 目前发表的是 93 个博客文字。 93 个博客文字是目前已发表的。 目前已发表的博客文字数量达 93 个。 93 个属于目前发表的博客文字。 目前发表的博客文字有 93 个之多。 93 个乃目前发表的博客文字。 目前发表的博客文字数量为 93 个这一事实。 93 个正是目前所发表的博客文字。 目前发表的 93 个是博客文字。 93 个是目前已发表的博客文字这一情况。 目前的博客文字发表量为 93 个。 已发表的博客文字目前是 93 个。 93 个就是目前所发表的博客文字数量。 目前发表的博客文字数量为 93 个这一状况。 93 个属于目前已发表的博客文字范畴。 目前发表的 93 个属于博客文字。 93 个是目前发表的博客文字这一情形。 目前的博客文字发表数为 93 个。 已发表的 93 个是博客文字这一事实。 目前发表的博客文字数量为 93 个的情况。 93 个是目前发表的博客文字这一现状。 目前发表的 93 个属于博客文字范畴。 93 个是目前发表的博客文字这一实际情况。 目前的博客文字发表数量为 93 个的状况。 93 个属于目前发表的博客文字的实际情况。 目前发表的 93 个属于博客文字的范畴。 93 个是目前发表的博客文字的实际情形。 目前的博客文字发表量为 93 个的情形。 已发表的 93 个属于博客文字的事实。 目前发表的博客文字数量为 93 个的事实。 93 个是目前发表的博客文字的事实情况。 目前的博客文字发表量为 93 个的事实状况。 93 个属于目前发表的博客文字的事实情形。 目前发表的 93 个属于博客文字的事实范畴。 93 个是目前发表的博客文字的事实实际情况。 目前的博客文字发表数量为 93 个的事实状况。 93 个属于目前发表的博客文字的事实实际情形。
info_dict 的公zhong号为【雷学委】,欢迎过来关注支持。
info_dict 的元数据是一个字典,其值为空字典。
判断是否包含特定的 key 呢?判断“gongzhong_hao”是否在 info_dict 中。
输出“所有键的列表:”以及 info_dict 的键的列表
打印出所有值的列表,这个列表是 info_dict 的值,具体为:%s
获取 key 所对应的的值,这个值是 info_dict 中的 'name' 。
# 获取但是不设置到info_dict内
获取 key DemoKey 对应的值,即 info_dict 中键为 'DemoKey' 的值,如果不存在则为 '匿名用户雷学委'
获取 key 对应的值,即 info_dict 中的 'DemoKey' 对应的值。这句代码会抛出异常:KeyError: 'DemoKey'。
# 如果没有某个key,进行设置默认值并返回
获取 key name 对应的值,其值为 info_dict.setdefault('name', '匿名用户雷学委')
获取 key DemoKey 对应的值,是 info_dict 中键为“DemoKey”的默认值,若不存在则设为“匿名用户雷学委”
获取 key DemoKey 所对应的值,即 info_dict['DemoKey'] 。
print("遍历字典-----开始")
对于 info_dict 中的每一个键值对,其中键为 key,值为 value。
输出("\t键[" + 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'] 。
打印("keys_copied_dict :", keys_copied_dict)
# 浅拷贝//Shadow Copy: 全拷贝但不完全拷贝
创建了一个新的字典 copied_dict,它是 info_dict 的副本。
打印("copied_dict :", copied_dict)
shadow_copied_dict 是 info_dict 的一个副本。
打印('shadow_copied_dict:', shadow_copied_dict)
雷学委提示:下面一行代码对“meta-data”这个 key 所对应的值进行了修改,而我们并非直接对 shadow_copied_dict 进行了修改。
info_dict 的元数据中的日期为 2021 年 11 月 4 日。
打印('info_dict:', info_dict)
这里输出的内容显示变化也被传递给了 shadow_copied_dict
print("*"*16 + "清空info_dict")
info_dict.clear()
打印“info_dict:”,然后打印 info_dict 。 # 先清空元素后进行打印操作
打印('shadow_copied_dict:', shadow_copied_dict) # 清空元素后打印 copied_dict
效果如下:
总结
本篇文章到此结束啦。希望能对你有所帮助呢。也期望你能多多留意脚本之家的更多相关内容哦。