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 相关文章推荐
Cython 三分钟入门教程
Sep 17 Python
linux系统使用python监测系统负载脚本分享
Jan 15 Python
纯Python开发的nosql数据库CodernityDB介绍和使用实例
Oct 23 Python
Django框架中方法的访问和查找
Jul 15 Python
浅谈Python中chr、unichr、ord字符函数之间的对比
Jun 16 Python
python3编码问题汇总
Sep 06 Python
python3使用QQ邮箱发送邮件
May 20 Python
python openpyxl使用方法详解
Jul 18 Python
Python实现汇率转换操作
May 03 Python
python中os包的用法
Jun 01 Python
python ETL工具 pyetl
Jun 07 Python
python中如何写类
Jun 29 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
虫族 ZERG 概述
2020/03/14 星际争霸
咖啡知识 咖啡养豆要养多久 排气又是什么
2021/03/06 新手入门
thinkPHP中配置的读取与C方法详解
2016/12/05 PHP
PHP实现的装箱算法示例
2018/06/23 PHP
jquery BS,dialog控件自适应大小
2009/07/06 Javascript
基于jquery的网页SELECT下拉框美化代码
2010/10/28 Javascript
window.ActiveXObject使用说明
2010/11/08 Javascript
javascript五图轮播切换实用版
2012/08/17 Javascript
ie支持function.bind()方法实现代码
2012/12/27 Javascript
Javascript弹出窗口的各种方法总结
2013/11/11 Javascript
Ajax请求在数据量大的时候出现超时的解决方法
2014/02/27 Javascript
Javascript 浮点运算精度问题分析与解决
2014/03/26 Javascript
JavaScript内存管理介绍
2015/03/13 Javascript
AngularJS基础 ng-copy 指令实例代码
2016/08/01 Javascript
vue 粒子特效的示例代码
2017/09/19 Javascript
jQuery读取本地的json文件(实例讲解)
2017/10/31 jQuery
webpack学习教程之前端性能优化总结
2017/12/05 Javascript
angularJs中$scope数据序列化的实例
2018/09/30 Javascript
jQuery实现的鼠标拖动浮层功能示例【拖动div等任何标签】
2018/12/29 jQuery
vue cli 3.x 项目部署到 github pages的方法
2019/04/17 Javascript
python插入排序算法的实现代码
2013/11/21 Python
用Python抢过年的火车票附源码
2015/12/07 Python
influx+grafana自定义python采集数据和一些坑的总结
2018/09/17 Python
在python中pandas的series合并方法
2018/11/12 Python
python 执行文件时额外参数获取的实例
2018/12/18 Python
selenium+python自动化测试环境搭建步骤
2019/06/03 Python
Python+PyQt5+MySQL实现天气管理系统
2020/06/16 Python
比利时买床:Beter Bed
2017/12/06 全球购物
安德玛加拿大官网:Under Armour加拿大
2019/10/02 全球购物
酒店大堂副理的职责范文
2014/02/13 职场文书
书法大赛策划方案
2014/06/04 职场文书
党的群众路线教育实践活动对照检查材料思想汇报
2014/09/19 职场文书
2015年秋季运动会前导词
2015/07/20 职场文书
golang goroutine顺序输出方式
2021/04/29 Golang
MySQL的索引你了解吗
2022/03/13 MySQL
python中字符串String及其常见操作指南(方法、函数)
2022/04/06 Python