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中的fileinput模块的简单实用示例
Jul 09 Python
Python numpy实现数组合并实例(vstack,hstack)
Jan 09 Python
python实现简单登陆系统
Oct 18 Python
Python运维开发之psutil库的使用详解
Oct 18 Python
使用python将图片格式转换为ico格式的示例
Oct 22 Python
python使用adbapi实现MySQL数据库的异步存储
Mar 19 Python
python3人脸识别的两种方法
Apr 25 Python
python3.6中@property装饰器的使用方法示例
Aug 17 Python
关于python pycharm中输出的内容不全的解决办法
Jan 10 Python
Python3搭建http服务器的实现代码
Feb 11 Python
详解vscode实现远程linux服务器上Python开发
Nov 10 Python
Pandas 稀疏数据结构的实现
Jul 25 Python
Python集合的基础操作
Nov 01 #Python
python基础之类属性和实例属性
python基础之类方法和静态方法
Python Matplotlib绘制条形图的全过程
python基础之模块的导入
python基础之文件操作
python基础之错误和异常处理
You might like
无数据库的详细域名查询程序PHP版(1)
2006/10/09 PHP
php实现的漂亮分页方法
2014/04/17 PHP
linux下编译安装memcached服务
2014/08/03 PHP
php 的反射详解及示例代码
2016/08/25 PHP
利用PHP将图片转换成base64编码的实现方法
2016/09/13 PHP
利用PHP判断文件是否为图片的方法总结
2017/01/06 PHP
Laravel validate error处理,ajax,json示例
2019/10/25 PHP
JQuery与Ajax常用代码实现对比
2009/10/03 Javascript
js和jquery批量绑定事件传参数一(新猪猪原创)
2010/06/23 Javascript
元素的内联事件处理函数的特殊作用域在各浏览器中存在差异
2011/01/12 Javascript
Javascript开发之三数组对象实例介绍
2012/11/12 Javascript
JavaScript格式化日期时间的方法和自定义格式化函数示例
2014/04/04 Javascript
js实现滚动条滚动到某个位置便自动定位某个tr
2021/01/20 Javascript
jQuery实现滚动条滚动到子元素位置(方便定位)
2017/01/08 Javascript
用jQuery实现圆点图片轮播效果
2017/03/19 Javascript
纯js实现动态时间显示
2020/09/07 Javascript
javascript实现点击星星小游戏
2019/12/24 Javascript
[00:50]深扒TI7聊天轮盘语音出处6
2017/05/11 DOTA
python生成日历实例解析
2014/08/21 Python
python uuid模块使用实例
2015/04/08 Python
使用PyV8在Python爬虫中执行js代码
2017/02/16 Python
python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算
2019/07/18 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
2020/01/08 Python
Tensorflow tensor 数学运算和逻辑运算方式
2020/06/30 Python
python利用递归方法实现求集合的幂集
2020/09/07 Python
Jupyter安装拓展nbextensions及解决官网下载慢的问题
2021/03/03 Python
详解CSS3实现响应式手风琴效果
2020/06/10 HTML / CSS
HTML5之SVG 2D入门7—SVG元素的重用与引用
2013/01/30 HTML / CSS
基于html5 canvas做批改作业的小插件
2020/05/20 HTML / CSS
蔻驰美国官网:COACH美国
2016/08/18 全球购物
Java中各种基本数据类型的默认值都是什么
2016/12/22 面试题
《挑山工》的教学反思
2014/02/16 职场文书
服装店营销方案
2014/03/10 职场文书
银行服务理念口号
2015/12/25 职场文书
python自动化调用百度api解决验证码
2021/04/13 Python
Python基础之赋值,浅拷贝,深拷贝的区别
2021/04/30 Python