详解Python中的Dict(下篇)
作者:雷学委 时间:2021-11-10 17:16:14
学委前面展示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)) # 直接打印
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['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())
print('所有值的列表:%s ' % info_dict.values())
print('获取key对应的值:', info_dict['name'])
# 获取但是不设置到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 DemoKey 对应的值:', 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)
## 雷学委提示:下面一行代码修改了‘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
效果如下:
来源:https://levin.blog.csdn.net/article/details/121435949
标签:Python,Dict


猜你喜欢
Django结合ajax进行页面实时更新的例子
2023-02-14 21:15:45

Python开发网站目录扫描器的实现
2022-07-09 11:51:02

python中关于property的最详细使用方法
2023-07-23 15:35:26
Go语言Http Server框架实现一个简单的httpServer
2024-02-19 11:04:33

Uchome1.2 1.5 代码学习 common.php
2023-11-15 02:56:10
微信小程序转化为uni-app项目的方法示例
2024-03-23 19:34:39

php session安全问题分析
2023-11-15 06:45:29
python生成可执行exe控制Microsip自动填写号码并拨打功能
2023-08-11 04:51:00

Oracle数据库系统紧急故障处理方法
2010-07-26 12:57:00
python3 property装饰器实现原理与用法示例
2021-07-10 05:02:28
Django多层嵌套ManyToMany字段ORM操作详解
2023-07-01 02:26:28
mysql分表分库的应用场景和设计方式
2024-01-22 05:49:39

打造设计你自己的字体 Ⅱ
2008-03-14 07:48:00

缓存是如何实现的?
2009-11-01 15:35:00
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
2023-07-13 11:20:21

在Python 中将类对象序列化为JSON
2023-06-11 16:41:32
python中字符串最常用的十三个处理操作记录
2023-10-19 23:25:32
图像替换新技术:状态域方法[译]
2009-08-06 16:41:00
javascript中substring()、substr()、slice()的区别
2024-04-16 09:54:35
python中argparse模块基础及使用步骤
2023-01-26 19:21:59