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搭建Django应用程序步骤及版本冲突问题解决
Nov 19 Python
python实现异步回调机制代码分享
Jan 10 Python
Python计算已经过去多少个周末的方法
Jul 25 Python
Python实现抓取网页生成Excel文件的方法示例
Aug 05 Python
python 脚本生成随机 字母 + 数字密码功能
May 26 Python
python list格式数据excel导出方法
Oct 31 Python
Python 实现中值滤波、均值滤波的方法
Jan 09 Python
itchat-python搭建微信机器人(附示例)
Jun 11 Python
python删除文件夹下相同文件和无法打开的图片
Jul 16 Python
图文详解Django使用Pycharm连接MySQL数据库
Aug 09 Python
Python标准库:内置函数max(iterable, *[, key, default])说明
Apr 25 Python
Python 调用 ES、Solr、Phoenix的示例代码
Nov 23 Python
Python集合的基础操作
Nov 01 #Python
python基础之类属性和实例属性
python基础之类方法和静态方法
Python Matplotlib绘制条形图的全过程
python基础之模块的导入
python基础之文件操作
python基础之错误和异常处理
You might like
世界咖啡生产者论坛呼吁:需要立即就咖啡价格采取认真行动
2021/03/06 咖啡文化
探讨php中遍历二维数组的几种方法详解
2013/06/08 PHP
php多层数组与对象的转换实例代码
2013/08/05 PHP
PHP采集类snoopy详细介绍(snoopy使用教程)
2014/06/19 PHP
php中创建和调用webservice接口示例
2014/07/25 PHP
PHP输出一个等腰三角形的方法
2015/05/12 PHP
PHP上传图片时判断上传文件是否为可用图片的方法
2016/10/20 PHP
PHP随机获取未被微信屏蔽的域名(微信域名检测)
2017/03/19 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
2018/09/04 PHP
根据分辩率调用不同的CSS.
2007/01/08 Javascript
基于JQuery 选择器使用说明介绍
2013/04/18 Javascript
javascript简单事件处理和with用法介绍
2013/09/16 Javascript
jquery实现table鼠标经过变色代码
2013/09/25 Javascript
createTextRange()的使用示例含文本框选中部分文字内容
2014/02/24 Javascript
JS实现超精简的链接列表在固定区域内滚动效果代码
2015/11/04 Javascript
js根据手机客户端浏览器类型,判断跳转官网/手机网站多个实例代码
2016/04/30 Javascript
jQuery选择器基础入门教程
2016/05/10 Javascript
利用python分析access日志的方法
2016/10/26 Javascript
Jquery Easyui对话框组件Dialog使用详解(14)
2016/12/19 Javascript
详解Webpack + ES6 最新环境搭建与配置
2018/06/04 Javascript
Vue2.0 v-for filter列表过滤功能的实现
2018/09/07 Javascript
JS实现根据详细地址获取经纬度功能示例
2019/04/16 Javascript
js实现坦克移动小游戏
2019/10/28 Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
2020/02/11 Javascript
你不知道的 TypeScript 高级类型(小结)
2020/08/28 Javascript
移动端JS实现拖拽两种方法解析
2020/10/12 Javascript
利用python提取wav文件的mfcc方法
2019/01/09 Python
python 回溯法模板详解
2020/02/26 Python
django创建css文件夹的具体方法
2020/07/31 Python
Python如何爬取51cto数据并存入MySQL
2020/08/25 Python
Lululemon加拿大官网:加拿大知名体育服装零售商
2019/04/12 全球购物
工厂门卫的岗位职责
2014/07/27 职场文书
怎样写离婚协议书
2014/09/10 职场文书
党员民主生活会对照检查材料思想汇报
2014/09/28 职场文书
党员群众路线自我剖析材料
2014/10/06 职场文书
公司考勤管理制度
2015/08/04 职场文书