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下用于监视文件系统的pyinotify包
Nov 13 Python
Python scikit-learn 做线性回归的示例代码
Nov 01 Python
python jieba分词并统计词频后输出结果到Excel和txt文档方法
Feb 11 Python
Pandas中把dataframe转成array的方法
Apr 13 Python
python3+PyQt5 实现Rich文本的行编辑方法
Jun 17 Python
Django认证系统实现的web页面实现代码
Aug 12 Python
python 默认参数相关知识详解
Sep 18 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
Feb 29 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
Jul 07 Python
Python如何实现大型数组运算(使用NumPy)
Jul 24 Python
Python3 pyecharts生成Html文件柱状图及折线图代码实例
Sep 29 Python
matplotlib事件处理基础(事件绑定、事件属性)
Feb 03 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 session 错误
2009/05/21 PHP
php快递单号查询接口使用示例
2014/05/05 PHP
php数组操作之键名比较与差集、交集赋值的方法
2014/11/10 PHP
PHP的时间戳与具体时间转化的简单实现
2016/06/13 PHP
PHP+MySQL实现消息队列的方法分析
2018/05/09 PHP
基于JQuery的简单实现折叠菜单代码
2010/09/15 Javascript
根据选择不同的下拉值出现相对应的文本输入框
2013/08/01 Javascript
使用js实现雪花飘落效果
2013/08/26 Javascript
JS网页图片按比例自适应缩放实现方法
2014/01/15 Javascript
javascript获取四位数字或者字母的随机数
2015/01/09 Javascript
JS实现点击上移下移LI行数据的方法
2015/08/05 Javascript
微信小程序实现滑动删除效果
2017/05/19 Javascript
Vue.js弹出模态框组件开发的示例代码
2017/07/26 Javascript
vue总线机制(bus)知识点详解
2020/05/10 Javascript
基于leaflet.js实现修改地图主题样式的流程分析
2020/05/15 Javascript
微信小程序学习总结(二)样式、属性、模板操作分析
2020/06/04 Javascript
vue实现多个echarts根据屏幕大小变化而变化实例
2020/07/19 Javascript
Vue优化:常见会导致内存泄漏问题及优化详解
2020/08/04 Javascript
在Django的模板中使用认证数据的方法
2015/07/23 Python
windows 10下安装搭建django1.10.3和Apache2.4的方法
2017/04/05 Python
Python中几种导入模块的方式总结
2017/04/27 Python
python去掉空白行的多种实现代码
2018/03/19 Python
python递归法解决棋盘分割问题
2019/07/17 Python
python的pstuil模块使用方法总结
2019/07/26 Python
python爬虫 批量下载zabbix文档代码实例
2019/08/21 Python
序列化Python对象的方法
2020/08/01 Python
详解向scrapy中的spider传递参数的几种方法(2种)
2020/09/28 Python
通过Django Admin+HttpRunner1.5.6实现简易接口测试平台
2020/11/11 Python
美国在线精品家居网站:Burke Decor
2017/04/12 全球购物
Gap加拿大官网:Gap Canada
2017/08/24 全球购物
工商学院毕业生个人自我评价
2013/09/19 职场文书
西门豹教学反思
2014/02/04 职场文书
幼儿园母亲节活动总结
2015/02/10 职场文书
城镇居民医疗保险工作总结
2015/08/10 职场文书
vue 数字翻牌器动态加载数据
2022/04/20 Vue.js
Mysql的Table doesn't exist问题及解决
2022/12/24 MySQL