Python数据结构dict常用操作代码实例
作者:我太难了008 时间:2022-05-13 02:16:43
dict是python中的常用数据结构,应该尽量掌握其使用方法
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中
代码如下
"""
初始化一个dict的四种方式:
1. dict() -> 创建一个空的dict
2. dict(mapping) -> new dictionary initialized from a mapping object's
(key, value) pairs
3. dict(iterable) -> new dictionary initialized as if via:
d = {}
for k, v in iterable:
d[k] = v
4. dict(**kwargs) -> new dictionary initialized with the name=value pairs
in the keyword argument list. For example: dict(one=1, two=2)
"""
# 第一种方式
d = dict()
# 第二种方式
# d = {"person": {"name": "admin", "age": 12},
# "animal": {"name": "gaodan", "age": 3},
# }
# 第三种方式
d = dict({"name": "admin"})
print(d)
# 第四种方式
d = dict(name='admin', age=12)
print(type(d))
print("原字典:%s" % d) # {'name': 'admin', 'age': 12}
# clear, 清空
# d.clear()
# print(d)
# copy 浅拷贝
new_d = d.copy()
print("copy出的新字典:%s" % new_d) # {'name': 'admin', 'age': 12}
new_d['name'] = 'root'
print('修改之后的copy字典:%s' % new_d) # 修改之后的copy字典:{'name': 'root', 'age': 12}
print("修改之后的原字典:%s" % d) # {'name': 'admin', 'age': 12}
# 总结: copy浅拷贝简单数据结构时,创建了一个新的对象,修改新dict中的值,不会引起原有dict中值的变化
print('*' * 50)
d = {"person": {"name": "admin", "age": 12},
"animal": {"name": "gaodan", "age": 3}
}
print(d) # {'person': {'name': 'admin', 'age': 12}, 'animal': {'name': 'gaodan', 'age': 3}}
new_d = d.copy()
new_d['person']['name'] = 'root'
print(new_d) # {'person': {'name': 'root', 'age': 12}, 'animal': {'name': 'gaodan', 'age': 3}}
print(d) # {'person': {'name': 'root', 'age': 12}, 'animal': {'name': 'gaodan', 'age': 3}}
# 总结: 浅拷贝: copy浅拷贝复杂数据结构时,只是指向了这个复杂数据结构的引用,并没有创建一个新的对象.所以修改new_d这个新dict的值时,原dict中的值也发生变化.如果是简单数据结构,不存在这类情况,上面也有示例
"""
python中的深拷贝 需要 import copy
copy.deepcopy()
"""
print('--------------------deep copy------------------')
import copy
d = {"person": {"name": "admin", "age": 12},
"animal": {"name": "gaodan", "age": 3}
}
print(d)
dd = copy.deepcopy(d)
print(dd) # {'person': {'name': 'admin', 'age': 12}, 'animal': {'name': 'gaodan', 'age': 3}}
dd['person']['name'] = '哑巴'
print(dd) # {'person': {'name': '哑巴', 'age': 12}, 'animal': {'name': 'gaodan', 'age': 3}}
print(d) # {'person': {'name': 'admin', 'age': 12}, 'animal': {'name': 'gaodan', 'age': 3}}
# fromkeys, 创建一个新的dict ,key是序列中的值
d = dict.fromkeys(['jet','lily'],{"name":"mam"})
print(d) # {'jet': {'name': 'mam'}, 'lily': {'name': 'mam'}}
# get .取值 ,没有就是None
value = d.get("jet")
print(value) #{'name': 'mam'}
d = {"name":'admin','age':12}
#items 方法
kv = d.items()
for k,v in kv:
print(k,v)
keys = d.keys()
print(keys) # dict_keys(['name', 'age'])
# pop(key) 移除指定的key 对应的kv
# value = d.pop('name') # 删除name 键值对
# print(value) # admin
# print(d) # {'age': 12}
# popitem 移除后面的一组item
popitem = d.popitem()
print(popitem) # ('age', 12) 移除了这一对映射关系
print(d) # {'name': 'admin'} d 还剩下这玩艺
d = {"name":'admin','age':12}
# setdefault(k,v) , 如果原dict有中k, 就返回原dict中k-->v , 否则就将k,v添加到dict中
default_value = d.setdefault('female', 'ali')
print(default_value)
print(d) # {'name': 'admin', 'age': 12, 'female': 'ali'}
default_value = d.setdefault('female', 'jd')
print(default_value) # ali
print(d) # {'name': 'admin', 'age': 12, 'female': 'ali'}
# update. 往dict中添加元素
# 使用update的第一种方式 ,注意key没有加引号
# d.update(book='python',teacher='dog')
print(d) # {'name': 'admin', 'age': 12, 'female': 'ali', 'book': 'python', 'teacher': 'dog'}
#使用update的第二种方式
d.update([('teacher','dog'),{'book','java'}]) #好吊的样子
print(d) #{'name': 'admin', 'age': 12, 'female': 'ali', 'teacher': 'dog', 'book': 'java'}
# values
vs = d.values()
print(vs) #dict_values(['admin', 12, 'ali', 'dog', 'java'])
来源:https://www.cnblogs.com/z-qinfeng/p/12037474.html
标签:Python,数据,结构,dict,操作
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
XHTML与HTML之间的7个区别
2009-05-20 10:13:00
用Dreamweaver设计自动关闭的网页
2010-09-02 12:29:00
![](https://img.aspxhome.com/file/UploadPic/20072/200723113111210s.jpg)
Php中用PDO查询Mysql来避免SQL注入风险的方法
2023-07-18 06:37:42
ubuntu 18.04搭建python环境(pycharm+anaconda)
2023-09-23 20:01:56
![](https://img.aspxhome.com/file/2023/9/62579_0s.png)
Python采集电影评论实战示例
2022-02-25 22:14:37
![](https://img.aspxhome.com/file/2023/6/124976_0s.png)
详解Python的Django框架中的中间件
2024-01-02 20:46:38
PHP文件运行步骤以及数据库的连接代码
2023-05-25 08:32:51
python实战之Scrapy框架爬虫爬取微博热搜
2022-07-08 02:09:50
![](https://img.aspxhome.com/file/2023/2/89012_0s.png)
python实现人人网登录示例分享
2022-06-25 09:17:51
Dreamweaver小技巧:超高速下载图像
2009-07-14 21:59:00
![](https://img.aspxhome.com/file/UploadPic/20072/20072311307259s.jpg)
javascript new fun的执行过程
2010-08-05 21:23:00
![](https://img.aspxhome.com/file/UploadPic/20108/5/20100805150736846-93s.jpg)
实用301转向到另一域名相应页面的asp代码
2011-04-18 10:42:00
JS页内查找关键词的高亮显示
2013-07-18 21:13:54
原来我一直安装 Python 库的姿势都不对呀
2021-03-28 10:42:41
Python爬虫入门案例之爬取二手房源数据
2021-07-13 15:31:41
![](https://img.aspxhome.com/file/2023/6/94066_0s.jpg)
Python PO设计模式的具体使用
2023-10-31 18:47:38
![](https://img.aspxhome.com/file/2023/8/125158_0s.png)
Python Logging 日志记录入门学习
2022-05-17 14:48:39
使用url_helper简化Python中Django框架的url配置教程
2023-01-10 14:44:51
matplotlib.subplot()画子图并共享y坐标轴的方法
2023-03-27 12:26:10
![](https://img.aspxhome.com/file/2023/4/96904_0s.png)
重新认识CSS的权重
2011-05-24 17:06:00