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魔术方法详解
Feb 14 Python
Python自动化测试Eclipse+Pydev 搭建开发环境
Aug 15 Python
教你用python3根据关键词爬取百度百科的内容
Aug 18 Python
Python数据分析之真实IP请求Pandas详解
Nov 18 Python
python实现创建新列表和新字典,并使元素及键值对全部变成小写
Jan 15 Python
详解python的四种内置数据结构
Mar 19 Python
如何使用pyinstaller打包32位的exe程序
May 26 Python
Django框架基础模板标签与filter使用方法详解
Jul 23 Python
python 并发下载器实现方法示例
Nov 22 Python
Django后端发送小程序微信模板消息示例(服务通知)
Dec 17 Python
python读取hdfs上的parquet文件方式
Jun 06 Python
详解用python -m http.server搭一个简易的本地局域网
Sep 24 Python
Python集合的基础操作
Nov 01 #Python
python基础之类属性和实例属性
python基础之类方法和静态方法
Python Matplotlib绘制条形图的全过程
python基础之模块的导入
python基础之文件操作
python基础之错误和异常处理
You might like
php中如何使对象可以像数组一样进行foreach循环
2013/08/09 PHP
PHP字符串长度计算 - strlen()函数使用介绍
2013/10/15 PHP
php版微信公众平台实现预约提交后发送email的方法
2016/09/26 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
2019/03/18 PHP
在Laravel中使用MongoDB的方法示例
2019/11/11 PHP
Js获取事件对象代码
2010/08/05 Javascript
jQuery编写widget的一些技巧分享
2010/10/28 Javascript
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
Angularjs全局变量被作用域监听的正确姿势
2016/02/06 Javascript
JavaScript的Backbone.js框架的一些使用建议整理
2016/02/14 Javascript
JavaScript实现邮箱地址自动匹配功能代码
2016/11/28 Javascript
js仿淘宝评价评分功能
2017/02/28 Javascript
详解Angular 开发环境搭建
2017/06/22 Javascript
详解Puppeteer前端自动化测试实践
2019/02/21 Javascript
Smartour 让网页导览变得更简单(推荐)
2019/07/19 Javascript
vue实现购物车结算功能
2020/06/18 Javascript
JavaScript中常用的3种弹出提示框(alert、confirm、prompt)
2020/11/10 Javascript
在Python中操作列表之list.extend()方法的使用
2015/05/20 Python
python爬虫实例详解
2018/06/19 Python
详解Python3之数据指纹MD5校验与对比
2019/06/11 Python
python实现身份证实名认证的方法实例
2019/11/08 Python
Keras—embedding嵌入层的用法详解
2020/06/10 Python
SKECHERS官方旗舰店:美国舒适运动休闲品牌
2017/12/22 全球购物
Raleigh兰令自行车美国官网:英国凤头牌自行车
2018/01/08 全球购物
一些高难度的SQL面试题
2016/11/29 面试题
linux比较文件内容的命令是什么
2013/03/04 面试题
一套Delphi的笔试题一
2016/02/14 面试题
综治宣传月活动总结
2014/04/28 职场文书
励志演讲稿3分钟
2014/08/21 职场文书
先进事迹材料范文
2014/12/29 职场文书
政协常委会议主持词
2015/07/03 职场文书
2021年最新用于图像处理的Python库总结
2021/06/15 Python
java泛型通配符详解
2021/07/25 Java/Android
mysql5.7的安装及Navicate长久免费使用的实现过程
2021/11/17 MySQL
MySQL 分区表中分区键为什么必须是主键的一部分
2022/03/17 MySQL
Python实现为PDF去除水印的示例代码
2022/04/03 Python