Python 字典中的所有方法及用法


Posted in Python onJune 10, 2020

字典是Python中唯一内建的映射类型。字典中没有特殊的顺序,但都是存储在一个特定的键(key)下面,键可以是数字,字符串,甚至是元组

字典的使用

在某些情况下,字典比列表更加适用:
1、表示一个游戏棋盘的状态,每个键都是由坐标值组成的元组
2、存储文件修改时间,用文件名作为键;
3、数字电话\地址薄

创建字典的五种方式

# 字典的创建方式
# 方式一 {key: value}
dict1 = {'one': 1, 'two': 2, 'three': 3}
print(dict1)

# 方式二 dict(zip(keys, values))
# dict([(k, v), (k, v)])
dict2 = dict([('one', 1), ('two', 2), ('three', 3)])
print(dict2)

# dict(((k, v), (k, v)))
dict3 = dict((('one', 1), ('two', 2), ('three', 3)))
print(dict3)

# 方式三 dict(key=value)
dict4 = dict(one=1, two=2, three=3)
print(dict4)

# 方式四 字典推导式
lst1 = ['one', 'two', 'three']
lst2 = [1, 2, 3]
dict5 = {lst1[i]: lst2[i] for i in range(len(lst1))}
print(dict5)

# 方式五 fromkeys
# 没有指定value,默认None
dict6 = dict.fromkeys(['k1', 'k2', 'k3'])
print(dict6) # {'k1': None, 'k2': None, 'k3': None}

# 指定value
dict7 = dict.fromkeys(['k1', 'k2', 'k3'], 'value')
print(dict7) # {'k1': 'value', 'k2': 'value', 'k3': 'value'}

字典的示例

1. setdefault使用

# 有则不变,无则增加
dic1 = {'name': 'lucy', 'age': 18}
dic1.setdefault('age', 45) # {'name': 'lucy', 'age': 18}
dic1.setdefault('sex', '男') # {'name': 'lucy', 'age': 18, 'sex': '男'}

2. pop使用

# 按照键删除键值对,有返回值
# 如果设置了第二个参数则无论字典中有无此键都不会报错
dic2 = {'name': 'lucy', 'age': 18}
ret2 = dic2.pop('age')
print(ret2) # 18
print(dic2) # {'name': 'lucy'}

dic3 = {'name': 'lucy', 'age': 18}
ret3 = dic3.pop('sex', '没有此键')
print(ret3) # 没有此键
print(dic3) # {'name': 'lucy', 'age': 18}

3. clear使用

# 清空
dic4 = {'name': 'lucy', 'age': 18}
dic4.clear()
print(dic4) # {}

4. get使用

dic5 = {'name': 'lucy', 'age': 18, 'hobby_list': ['study', 'play', 'shopping']}

l1 = dic5.get('hobby_list')
print(l1) # ['study', 'play', 'shopping']

l2 = dic5.get('sex')
print(l2) # None

l3 = dic5.get('sex', '没有此键')
print(l3) # 没有此键

5. keys()使用

dic6 = {'name': 'lucy', 'age': 18, 'hobby_list': ['study', 'play', 'shopping']}

# 1. 特殊的数据类型,类似于列表,但是没有索引
print(dic6.keys(), type(dic6.keys())) # dict_keys(['name', 'age', 'hobby_list']) <class 'dict_keys'>

# 2. 可以转化成列表
l1 = list(dic6.keys())
print(l1) # ['name', 'age', 'hobby_list']

# 3. 循环遍历
for k in dic6.keys():
 print(k, end=',') # name,age,hobby_list,

for k in dic6:
 print(k, end=',') # name,age,hobby_list,

6. values()使用

dic7 = {'name': 'lucy', 'age': 18, 'hobby_list': ['study', 'play', 'shopping']}

# 1. 特殊的数据类型,类似于列表,但是没有索引
print(dic7.values()) # dict_values(['lucy', 18, ['study', 'play', 'shopping']])

# 2. 可以转化成列表
print(list(dic7.values())) # ['lucy', 18, ['study', 'play', 'shopping']

# 3. 循环遍历
for val in dic7.values():
 print(val, end=',') # lucy,18,['study', 'play', 'shopping'],

7. items()使用

dic8 = {'name': 'lucy', 'age': 18, 'hobby_list': ['study', 'play', 'shopping']}
print(dic8.items()) # dict_items([('name', 'lucy'), ('age', 18), ('hobby_list', ['study', 'play', 'shopping'])])

for it in dic8.items():
 print(it)
# ('name', 'lucy')
# ('age', 18)
# ('hobby_list', ['study', 'play', 'shopping'])

# 利用了元组的拆包
for key, value in dic8.items():
 print(key, value)
# name lucy
# age 18
# hobby_list ['study', 'play', 'shopping']

8. update()使用

# 更新,有则覆盖,无则添加
# 1. 增加键值对
# 方式一:
dic9 = {'name': 'lucy', 'age': 18}
dic9.update(hobby='运动', hight=178)
print(dic9) # {'name': 'lucy', 'age': 18, 'hobby': '运动', 'hight': 178}

# 方式二:
dic10 = {'name': 'lucy', 'age': 18}
dic10.update([('hobby', '运动'), ('hight', 178)])
print(dic10) # {'name': 'lucy', 'age': 18, 'hobby': '运动', 'hight': 178}

# 方式三:
dic11 = {'name': 'lucy', 'age': 18}
dic12 = {'name': 'tom', 'hight': 178}
dic11.update(dic12)
print(dic11) # {'name': 'tom', 'age': 18, 'hight': 178}

# 2. 修改键所对应的值
dic13 = {'name': 'lucy', 'age': 18}
dic13.update(name='tom')
print(dic13) # {'name': 'tom', 'age': 18}

9. fromkeys()使用

# 没有指定value,默认None
dict14 = dict.fromkeys(['k1', 'k2', 'k3'])
print(dict14) # {'k1': None, 'k2': None, 'k3': None}

# 指定value
dict14 = dict.fromkeys(['k1', 'k2', 'k3'], 'value')
print(dict14) # {'k1': 'value', 'k2': 'value', 'k3': 'value'}

10. copy使用

# 浅拷贝
dict15 = dict(one=1, two=2, three=3)
dict16 = dict15.copy()
print(dict16)

11. popitem()使用

# 随机删除字典中的一对 键和值
dict17 = dict(one=1, two=2, three=3)
a = dict17.popitem()
print(a)
print(dict17)
 

到此这篇关于Python 字典中的所有方法及用法的文章就介绍到这了,更多相关Python 字典方法及用法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python打开文件并获取文件相关属性的方法
Apr 23 Python
在Linux下使用Python的matplotlib绘制数据图的教程
Jun 11 Python
Python中random模块生成随机数详解
Mar 10 Python
python3.5仿微软计算器程序
Mar 30 Python
Python中字符串的处理技巧分享
Sep 17 Python
Python multiprocess pool模块报错pickling error问题解决方法分析
Mar 20 Python
django执行原始查询sql,并返回Dict字典例子
Apr 01 Python
Python unittest单元测试框架实现参数化
Apr 29 Python
python 使用paramiko模块进行封装,远程操作linux主机的示例代码
Dec 03 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
Jan 06 Python
Python实现滑雪小游戏
Sep 25 Python
Python中的变量与常量
Nov 11 Python
在keras 中获取张量 tensor 的维度大小实例
Jun 10 #Python
Keras—embedding嵌入层的用法详解
Jun 10 #Python
Keras框架中的epoch、bacth、batch size、iteration使用介绍
Jun 10 #Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
Jun 10 #Python
JAVA及PYTHON质数计算代码对比解析
Jun 10 #Python
keras 使用Lambda 快速新建层 添加多个参数操作
Jun 10 #Python
matplotlib 生成的图像中无法显示中文字符的解决方法
Jun 10 #Python
You might like
PHP判断表单复选框选中状态完整例子
2014/06/24 PHP
php对象和数组相互转换的方法
2015/05/12 PHP
Cygwin中安装PHP方法步骤
2015/07/04 PHP
php 把数字转换成汉字的代码
2015/07/21 PHP
PHP7安装Redis扩展教程【Linux与Windows平台】
2016/09/30 PHP
[原创]PHPCMS遭遇会员投稿审核无效的解决方法
2017/01/11 PHP
利用XMLHTTP传递参数在另一页面执行并刷新本页
2006/10/26 Javascript
Javascript 阻止javascript事件冒泡,获取控件ID值
2009/06/27 Javascript
javascript中比较字符串是否相等的方法
2013/07/23 Javascript
js中prototype用法详细介绍
2013/11/14 Javascript
Javascript异步编程模型Promise模式详细介绍
2014/05/08 Javascript
jQuery实现订单提交页发送短信功能前端处理方法
2016/07/04 Javascript
Bootstrap基本样式学习笔记之表单(3)
2016/12/07 Javascript
JavaScript取得gridview中获取checkbox选中的值
2017/07/24 Javascript
用 Vue.js 递归组件实现可折叠的树形菜单(demo)
2017/12/25 Javascript
Angular实现点击按钮控制隐藏和显示功能示例
2017/12/29 Javascript
Vue中使用create-keyframe-animation与动画钩子完成复杂动画
2019/04/09 Javascript
解决vue.js提交数组时出现数组下标的问题
2019/11/05 Javascript
如何配置vue.config.js 处理static文件夹下的静态文件
2020/06/19 Javascript
[01:01]2020完美高校联赛(秋)西安落幕
2021/03/11 DOTA
使用Python脚本来获取Cisco设备信息的示例
2015/05/04 Python
python基于urllib实现按照百度音乐分类下载mp3的方法
2015/05/25 Python
Python抓取百度查询结果的方法
2015/07/08 Python
Python实现K折交叉验证法的方法步骤
2019/07/11 Python
线程安全及Python中的GIL原理分析
2019/10/29 Python
基于Python爬取爱奇艺资源过程解析
2020/03/02 Python
浅谈cv2.imread()和keras.preprocessing中的image.load_img()区别
2020/06/12 Python
通往英国高街的商店橱窗:Down Your High Street
2020/07/19 全球购物
Crabtree & Evelyn欧盟:豪华洗浴、身体和护发
2021/03/09 全球购物
新闻网站实习自我鉴定
2013/09/25 职场文书
初中学生期末评语
2014/04/24 职场文书
班级文化建设标语
2014/06/23 职场文书
大学生在校表现评语
2014/12/31 职场文书
学校捐书活动总结
2015/05/08 职场文书
go原生库的中bytes.Buffer用法
2021/04/25 Golang
redis三种高可用方式部署的实现
2021/05/11 Redis