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函数参数*args**kwargs用法实例
Dec 04 Python
python绘图库Matplotlib的安装
Jul 03 Python
python实现在无须过多援引的情况下创建字典的方法
Sep 25 Python
用Python实现一个简单的能够上传下载的HTTP服务器
May 05 Python
浅谈python中的面向对象和类的基本语法
Jun 13 Python
用pickle存储Python的原生对象方法
Apr 28 Python
创建pycharm的自定义python模板方法
May 23 Python
django表单实现下拉框的示例讲解
May 29 Python
分享Python切分字符串的一个不错方法
Dec 14 Python
python numpy 矩阵堆叠实例
Jan 17 Python
Python 定义只读属性的实现方式
Mar 05 Python
Python+PyQt5+MySQL实现天气管理系统
Jun 16 Python
Python集合的基础操作
Nov 01 #Python
python基础之类属性和实例属性
python基础之类方法和静态方法
Python Matplotlib绘制条形图的全过程
python基础之模块的导入
python基础之文件操作
python基础之错误和异常处理
You might like
PHP加速 eAccelerator配置和使用指南
2009/06/05 PHP
获取用户Ip地址通用方法与常见安全隐患(HTTP_X_FORWARDED_FOR)
2013/06/01 PHP
PHP register_shutdown_function函数的深入解析
2013/06/03 PHP
基于php和mysql的简单的dao类实现crud操作功能
2014/01/27 PHP
yii2.0整合阿里云oss上传单个文件的示例
2017/09/19 PHP
JavaScript入门学习书籍推荐
2008/06/12 Javascript
Jquery Ajax学习实例3 向WebService发出请求,调用方法返回数据
2010/03/16 Javascript
js判断iframe内的网页是否滚动到底部触发事件
2014/03/18 Javascript
用js闭包的方法实现多点标注冒泡示例
2014/05/29 Javascript
jQuery实现简单网页遮罩层/弹出层效果兼容IE6、IE7
2014/06/16 Javascript
jquery操作checkbox示例分享
2014/07/21 Javascript
javascript日期处理函数,性能优化批处理
2015/09/06 Javascript
jQuery开源组件BootstrapValidator使用详解
2017/06/29 jQuery
JS解析url查询参数的简单代码
2017/08/06 Javascript
详解Vue中watch对象内属性的方法
2019/02/01 Javascript
微信小程序实现人脸识别登陆的示例代码
2019/04/02 Javascript
vue移动端城市三级联动组件使用详解
2019/07/26 Javascript
[01:16:12]完美世界DOTA2联赛PWL S2 FTD vs Inki 第一场 11.21
2020/11/23 DOTA
Python爬虫包 BeautifulSoup  递归抓取实例详解
2017/01/28 Python
Python实现针对含中文字符串的截取功能示例
2017/09/22 Python
python自定义函数实现一个数的三次方计算方法
2019/01/20 Python
python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例
2020/02/26 Python
django 链接多个数据库 并使用原生sql实现
2020/03/28 Python
解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题
2020/05/20 Python
利用css3画个同心圆示例代码
2017/07/03 HTML / CSS
HTML5中canvas中的beginPath()和closePath()的重要性
2018/08/24 HTML / CSS
澳大利亚宠物食品和药物在线:Jumbo Pets
2018/03/24 全球购物
广州迈达威.net面试题目
2012/03/10 面试题
城市规划应届毕业生自荐信
2014/07/04 职场文书
2014年安全生产目标责任书
2014/07/23 职场文书
国家税务局干部作风整顿整改措施
2014/09/18 职场文书
关于运动会广播稿50字
2014/10/18 职场文书
运动会800米赞词
2015/07/22 职场文书
2016年春节慰问信息大全
2015/11/30 职场文书
总结一些Java常用的加密算法
2021/06/11 Java/Android
国际最新研究在陨石中发现DNA主要成分 或由陨石带来地球
2022/04/29 数码科技