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错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
Aug 22 Python
深入理解python中的浅拷贝和深拷贝
May 30 Python
Python 40行代码实现人脸识别功能
Apr 02 Python
python下setuptools的安装详解及No module named setuptools的解决方法
Jul 06 Python
python3连接MySQL数据库实例详解
May 24 Python
python实现京东秒杀功能
Jul 30 Python
django实现后台显示媒体文件
Apr 07 Python
Python实现在线批量美颜功能过程解析
Jun 10 Python
python中的垃圾回收(GC)机制
Sep 21 Python
Django如何实现防止XSS攻击
Oct 13 Python
python产生模拟数据faker库的使用详解
Nov 04 Python
numpy数据类型dtype转换实现
Apr 24 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实现四舍五入的方法小结
2015/03/03 PHP
php实现获取近几日、月时间示例
2019/07/06 PHP
laravel框架之数据库查出来的对象实现转化为数组
2019/10/23 PHP
JS文本获得焦点清除文本文字的示例代码
2014/01/13 Javascript
javascript面向对象程序设计(一)
2015/01/29 Javascript
深入理解JavaScript系列(27):设计模式之建造者模式详解
2015/03/03 Javascript
jQuery解析Json实例详解
2015/11/24 Javascript
Extjs4.0 ComboBox如何实现三级联动
2016/05/11 Javascript
js文件中直接alert()中文出来的是乱码的解决方法
2016/11/01 Javascript
jquery.rotate.js实现可选抽奖次数和中奖内容的转盘抽奖代码
2017/08/23 jQuery
详解vue表单——小白速看
2018/04/08 Javascript
vue2.0 下拉框默认标题设置方法
2018/08/22 Javascript
Vue2(三)实现子菜单展开收缩,带动画效果实现方法
2019/04/28 Javascript
layui实现下拉框三级联动
2019/07/26 Javascript
js与jquery获取input输入框中的值实例讲解
2020/02/27 jQuery
Vue中父子组件的值传递与方法传递
2020/09/28 Javascript
jquery自定义组件实例详解
2020/12/31 jQuery
python获取图片颜色信息的方法
2015/03/18 Python
分享一个常用的Python模拟登陆类
2015/03/29 Python
tensorflow构建BP神经网络的方法
2018/03/12 Python
详解Python中正则匹配TAB及空格的小技巧
2019/07/26 Python
python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例
2020/02/27 Python
matplotlib jupyter notebook 图像可视化 plt show操作
2020/04/24 Python
Exception类的常用方法
2012/06/16 面试题
司机岗位职责
2013/11/15 职场文书
银行实习生的自我评价
2013/12/09 职场文书
医学生自我鉴定范文
2014/03/26 职场文书
会计学自荐信
2014/06/03 职场文书
庆国庆国旗下讲话稿2014
2014/09/21 职场文书
销售2014年度工作总结
2014/12/08 职场文书
中英文求职信范文
2015/03/19 职场文书
人民币使用说明书
2019/04/17 职场文书
简短的36句中秋节祝福信息语句
2019/09/09 职场文书
导游词之南京栖霞山
2019/10/18 职场文书
Go 实现英尺和米的简单单位换算方式
2021/04/29 Golang
一次SQL查询优化原理分析(900W+数据从17s到300ms)
2022/06/10 SQL Server