Python字典的基础操作


Posted in Python onNovember 01, 2021

1、字典的概念

Python中的字典数据类型和现实中的字典很像,它是以键值对(键和值的组合)的方式把数据组织到一起,可以通过键找到与之对应的值并进行操作。就跟字典中每次字(键)都会有对应的解释(值)一样,每个字和它的解释合在一起就是字典中的一个条目,而字典中通常包含了很多个这样的条目。

2、创建和使用字典

Python中创建字典使用{}字面量语法,这跟创建集合的符号是一样的。但是字典的{}中的元素是以键值对的形式存在的,每个元素由:分隔的两个值构成,:前面是键:后面是值,每个对之间用逗号,分割语法格式,

具体语法格式如下:

dict = {key1 : value1, key2 : value2 }

2.1 创建字典

# 创建字典
dict1 = {"姓名": "甜甜"}
print(type(dict1), dict1)  # <class 'dict'> {'姓名': '甜甜'}

dict2 = {
    "姓名": "甜甜",
    "性别":  "女",
    "年龄": "19"
}
print(dict2)  # {'姓名': '甜甜', '性别': '女', '年龄': '19'}

使用dict()或者是字典的生成式语法来创建字典,示例代码如下:

# 使用dict 创建对象,键不可以加""引号
dict1 = dict(姓名="甜甜", 性别="女", 年龄="19")
print(type(dict1), dict1)  # <class 'dict'> {'姓名': '甜甜', '性别': '女', '年龄': '19'}

list1 = ["姓名", "性别", "年龄"]
list2 = ["甜甜", "女", "19"]
# zip()函数将对象中对应的元素打包成一个个元组,返回由这些元组组成的对象
dict2 = dict(zip(list1, list2))
print(dict2)  # {'姓名': '甜甜', '性别': '女', '年龄': '19'}


# 使用生成列创建字典
dict3 = {x: x ** 3 for x in range(6)}
print(dict3)  # {0: 0, 1: 1, 2: 8, 3: 27, 4: 64, 5: 125}

可以使用len(dict)得到字典元素个数,即键的总数

for循环也只能对键有效

dict1 = {'姓名': '甜甜', '性别': '女', '年龄': '19'}
print(len(dict1))  # 3

for ch in dict1:
    print(ch)
'''
姓名
性别
年龄
'''

3、字典的运算

对于字典来说,成员运算和索引(字典的索引是键值对中的键)运算是尤为重要的,前者可以判断指定的键在不在字典中,后者可以得对应的值,或对其进行修改或者新加。字典中的键必须是不变类型,例如整数(int)、浮点数(float)、字符串(str)、元组(tuple)等类型的值。字典本身也是可变类型

示例代码:

dict1 = {'姓名': '甜甜', '性别': '女', '年龄': '19'}

# 成员运算
print("姓名" in dict1, "性别" not in dict1)  # True False

# 先判断在修改
if "姓名" in dict1:
    dict1["姓名"] = '王甜甜'
    print(dict1)  # {'姓名': '王甜甜', '性别': '女', '年龄': '19'}

# 通过索引为dict1 增加数据
dict1["爱好"] = "旅游"

print("爱好" in dict1)  # True


# 对字典的键进行循环并通索引运算获取键对应的值
for key in dict1:
    print(f'{key}: {dict1[key]}')
'''
姓名: 王甜甜
性别: 女
年龄: 19
爱好: 旅游
'''

注意:在通过索引运算获取字典中的值时,如指定的键没有在字典中,将会引发KeyError异常

3.1 字典的方法

字典的方法都是对键值对进行相关操作:

# 字典的嵌套
students = {
    10001: {"name": "小明", "sex": "男", "age": 18},
    10002: {"name": "小红", "sex": "女", "age": 16},
    10003: {"name": "小白", "sex": "女", "age": 19},
    10004: {"name": "小周", "sex": "男", "age": 20}
}

# 使用get方法通过键获取对应的值,如果取不到是返回的默认值(默认为None)
print(students.get(10002))    # {'name': '小红', 'sex': '女', 'age': 16}
print(students.get(10005))    # None
print(students.get(10005, "没有这个学生"))    # 没有这个学生

# 获取字典中所有的键
print(students.keys())      # dict_keys([10001, 10002, 10003, 10004])
# 获取字典中所有的值
print(students.values())    # dict_values([{...}, {...}, {...}, {...}])
# 获取字典中所有的键值对
# dict_items([(10001, {...}), (10002, {....}), (10003, {...}), (10004, {...})])
print(students.items())
# 对字典中所有的键值对进行循环遍历
for key, value in students.items():
    print(key, '--->', value)

# 使用pop方法通过键删除对应的键值对并返回该值
stu1 = students.pop(10002)
print(stu1)             # {'name': '小红', 'sex': '女', 'age': 16}
print(len(students))    # 3
# 如果删除的不在字典中,会引发KeyError异常
# stu2 = students.pop(10005)    # KeyError: 10005


# 使用popitem方法删除字典中最后一组键值对并返回对应的二元组
# 如果字典中没有元素,调用该方法将引发KeyError异常
key, value = students.popitem()
print(key, value)    # 10004 {'name': '小周', 'sex': '男', 'age': 20}

# setdefault可以更新字典中的键对应的值或向字典中存入新的键值对
# setdefault方法的第一个参数是键,第二个参数是键对应的值
# 如果这个键在字典中存在,更新这个键之后会返回原来与这个键对应的值
# 如果这个键在字典中不存在,方法将返回第二个参数的值,默认为None
result = students.setdefault(10005, {"name": "小绿", "sex": "女", "age": 18})
print(result)        # {'name': '小绿', 'sex': '女', 'age': 18}
print(students)      # {10001: {...}, (10003, {...}), 10005: {...}}

# 使用update更新字典元素,相同的键会用新值覆盖掉旧值,不同的键会添加到字典中
others = {
    10005: {"name": "小南", "sex": "男", "age": 19},
    10006: {"name": "小北", "sex": "男", "age": 19},
    10007: {"name": "小冬", "sex": "男", "age": 19}
}
students.update(others)
# {10001: {...}, 10003: {...}, 10005: {...}, 10006: {...}, 10007: {...}}
print(students)

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

Python 相关文章推荐
python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
Aug 15 Python
Python之ReportLab绘制条形码和二维码的实例
Jan 15 Python
python儿童学游戏编程知识点总结
Jun 03 Python
详解用python生成随机数的几种方法
Aug 04 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
Aug 06 Python
Python numpy多维数组实现原理详解
Mar 10 Python
Python CSS选择器爬取京东网商品信息过程解析
Jun 01 Python
Python while true实现爬虫定时任务
Jun 08 Python
Python numpy矩阵处理运算工具用法汇总
Jul 13 Python
Python爬虫Scrapy框架CrawlSpider原理及使用案例
Nov 20 Python
python实现ping命令小程序
Dec 28 Python
python爬取2021猫眼票房字体加密实例
Feb 19 Python
Python集合的基础操作
Nov 01 #Python
python基础之类属性和实例属性
python基础之类方法和静态方法
Python Matplotlib绘制条形图的全过程
python基础之模块的导入
python基础之文件操作
python基础之错误和异常处理
You might like
php下HTTP Response中的Chunked编码实现方法
2008/11/19 PHP
鸡肋的PHP单例模式应用详解
2013/06/03 PHP
PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
2016/01/04 PHP
PHP中的数组处理函数实例总结
2016/01/09 PHP
eclipse php wamp配置教程
2016/06/30 PHP
简单实现PHP留言板功能
2016/12/21 PHP
jquery 简单图片导航插件jquery.imgNav.js
2010/03/17 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(二)人物行走的实现
2013/01/23 Javascript
写出高效jquery代码的19条指南
2014/03/19 Javascript
jQuery新的事件绑定机制on()示例应用
2014/07/18 Javascript
asp.net+js实现金额格式化
2015/02/27 Javascript
JavaScript函数学习总结以及相关的编程习惯指南
2015/11/16 Javascript
谈谈Jquery ajax中success和complete有哪些不同点
2015/11/20 Javascript
jQuery解析Json实例详解
2015/11/24 Javascript
JavaScript下的时间格式处理函数Date.prototype.format
2016/01/27 Javascript
Summernote实现图片上传功能的简单方法
2016/07/11 Javascript
纯前端JavaScript实现Excel IO案例分享
2016/08/26 Javascript
详解AngularJs中$resource和restfu服务端数据交互
2016/09/21 Javascript
微信小程序 input输入框控件详解及实例(多种示例)
2016/12/14 Javascript
微信小程序 配置顶部导航条标题颜色的实现方法
2017/09/20 Javascript
JavaScript根据json生成html表格的示例代码
2018/10/24 Javascript
详解使用webpack+electron+reactJs开发windows桌面应用
2019/02/01 Javascript
微信小程序入口场景的问题集合与相关解决方法
2019/06/26 Javascript
VUE实现密码验证与提示功能
2019/10/18 Javascript
微信小程序获取当前位置和城市名
2019/11/13 Javascript
解决nuxt 自定义全局方法,全局属性,全局变量的问题
2020/11/05 Javascript
vue组件中节流函数的失效的原因和解决方法
2020/12/02 Vue.js
python基础教程之面向对象的一些概念
2014/08/29 Python
python selenium自动上传有赞单号的操作方法
2018/07/05 Python
Python求均值,方差,标准差的实例
2019/06/29 Python
Python代码需要缩进吗
2020/07/01 Python
html5 canvas-1.canvas介绍(hello canvas)
2013/01/07 HTML / CSS
BONIA波尼亚新加坡官网:皮革手袋,鞋类和配件
2016/08/25 全球购物
客户经理竞聘演讲稿
2014/05/15 职场文书
小型婚礼主持词
2015/06/30 职场文书
Nginx优化服务之网页压缩的实现方法
2021/03/31 Servers