2.3 字典

1. 基本概念

字典:

  • 字典是由一系列键值对组成,可以是数字、字符串、列表等任何类型。
  • 字典中的键值对是无序的,都是随机排列。
  • 字典中的键(key)必须保证唯一,但是值(value)可以重复。
  • 键和值之间用逗号 ‘:’ 分隔开,而键值对之间用冒号 ‘,’ 分隔,整个字典被一对 ‘{}’ 包括起来。

2. 字典的创建、添加、删除、修改、查询
2.1 创建字典
     创建字典时我们可以先创建一个空字典,即使用一对空的花括号定义一个字典,然后再分行添加各个键值对。
例:

scores = {}           # 创建空字典
# scores = dict()     # 创建空字典scores['语文'] = 89   # 向字典中添加键值对
scores['数学'] = 92
scores['英语'] = 96
print(scores)

输出:

{'语文': 89, '数学': 92, '英语': 96}进程已结束,退出代码 0

2.2 添加键值对
例1:添加单个键值对

scores = {'语文': 89,'数学': 92,'英语': 96,
}
scores['政治'] = 92
print(scores)

输出:

{'语文': 89, '数学': 92, '英语': 96, '政治': 92}进程已结束,退出代码 0

例2:添加多个,使用 a.update(b) 方法将另一个字典 b 中的内容添加到原字典 a 中,相同 key 值的内容 value 值被替换,其余内容添加。

scores = {'语文': 89,'数学': 92,'英语': 96,
}
score2 = {'政治': 95,'历史': 88,'英语': 92,
}
scores.update(score2)
print(scores)

输出:

{'语文': 89, '数学': 92, '英语': 92, '政治': 95, '历史': 88}进程已结束,退出代码 0

例3:使用 a.setdefault() 函数向字典 a 中添加 key 值,如果 key 存在不做修改;如果 key 不存在,该方法会先为这个不存在的 key 设置一个默认的 value,然后再返回该 key 对应的 value

scores = {'语文': 89,'数学': 92,'英语': 96,
}
print(scores.setdefault('政治', 91))
print(scores)

输出:

91
{'语文': 89, '数学': 92, '英语': 96, '政治': 91}进程已结束,退出代码 0

2.3 删除字典
     创建字典时我们可以先创建一个空字典,即使用一对空的花括号定义一个字典,然后再分行添加各个键值对。

  1. del a[ ] (使用 del 方法删除字典 a 中指定 key-value 对 )

例:

scores = {'语文': 89,'数学': 92,'英语': 96,'政治': 95,
}
del scores['语文']
print(scores)

输出:

{'数学': 92, '英语': 96, '政治': 95}进程已结束,退出代码 0
  1. a.pop( )

     使用 pop( ) 方法删除字典 a 中指定 key 的 key-value 对;key 存在,则删除,并返回对应的 value;key 不存在,报错。

例:

scores = {'语文': 89,'数学': 92,'英语': 96,'政治': 95,
}
print(scores)
scores.pop('语文')
print(scores)
print(scores.pop('物理'))   # 原列表 key 值中没有物理,报错 KeyError

输出:

Traceback (most recent call last):
{'语文': 89, '数学': 92, '英语': 96, '政治': 95}File "D:/PythonWorkSpace/Lianxi.py", line 195, in <module>
{'数学': 92, '英语': 96, '政治': 95}print(scores.pop('物理'))
KeyError: '物理'进程已结束,退出代码 1
  1. a.clear( )
        用于清空字典中所有的 key-value 对,对一个字典执行 clear() 方法之后,该字典就会变成一个空字典。

例:

scores = {'语文': 89,'数学': 92,'英语': 96,'政治': 95,
}
scores.clear()
print(scores)

输出:

{}进程已结束,退出代码 0
  1. a.popitem()
        删除字典 a 中最后一个 key-value。

例:

scores = {'语文': 89,'数学': 92,'英语': 96,'政治': 95,
}
print(scores.popitem())
print(scores)

输出:

('政治', 95)
{'语文': 89, '数学': 92, '英语': 96}进程已结束,退出代码 0

    由于实际上 popitem 弹出的就是一个元组,因此程序完全可以通过序列解包的方式用两个变量分别接收 key 和 value

例:

scores = {'语文': 89,'数学': 92,'英语': 96,'政治': 95,
}
key, value = scores.popitem()
print(scores)
print(key, value)

输出:

{'语文': 89, '数学': 92, '英语': 96}
政治 95进程已结束,退出代码 0

2.4 修改字典
    要修改字典中的值,可依次指明自点名、用方括号括起来的键以及与该键相关联的新值。

例:

scores = {'语文': 89,'数学': 92,'英语': 96,'政治': 95,
}
scores['语文'] = 90
print(scores)

输出:

{'语文': 90, '数学': 92, '英语': 96, '政治': 95}进程已结束,退出代码 0

2.5 查询字典

例1:a.keys( ) 返回字典 a 中的所有 key 值。

scores = {'语文': 89,'数学': 92,'英语': 96,'政治': 95,
}
print(scores.keys())

输出:

dict_keys(['语文', '数学', '英语', '政治'])进程已结束,退出代码 0

例2:a.values( ) 返回字典 a 中的所有 values 值。

scores = {'语文': 89,'数学': 92,'英语': 96,'政治': 95,
}
print(scores.values())

输出:

dict_values([89, 92, 96, 95])进程已结束,退出代码 0

例3:a.items( ) 返回字典 a 中的所有 key-value。

scores = {'语文': 89,'数学': 92,'英语': 96,'政治': 95,
}
print(scores.items())

输出:

dict_items([('语文', 89), ('数学', 92), ('英语', 96), ('政治', 95)])进程已结束,退出代码 0

2.6 排序字典
    可以通过对字典的键或值进行排序来实现对整个字典的排序。
例:

scores = {'yuwen': 89,'shuxue': 92,'yingyu': 96,'zhengzhi': 95,
}
print('未排序:', scores)
print('已排序:', sorted(scores.keys()), [scores[i] for i in sorted(scores.keys())])  # 使用sorted()函数后为列表

输出:

未排序: {'yuwen': 89, 'shuxue': 92, 'yingyu': 96, 'zhengzhi': 95}
已排序: ['shuxue', 'yingyu', 'yuwen', 'zhengzhi'] [92, 96, 89, 95]进程已结束,退出代码 0

3. 字典的特性

  1. 索引
        通过键 key 来索引出值 value。
    例:
scores = {'语文': 89,'数学': 92,'英语': 96,'政治': 95,
}
print(scores['语文'])

输出:

89进程已结束,退出代码 0
  1. 嵌套
        有时候需要将一系列字典存储在列表中,或将列表作为值存储在字典中,这成为嵌套。

例1:列表中嵌套字典

stu1 = {'name': 'xiaoming', 'sex': 'male', 'number': '01'}
stu2 = {'name': 'xiaogang', 'sex': 'male', 'number': '02'}
stu3 = {'name': 'xiaohong', 'sex': 'female', 'number': '03'}students = [stu1, stu2, stu3]
for student in students:print(student)

输出:

{'name': 'xiaoming', 'sex': 'male', 'number': '01'}
{'name': 'xiaogang', 'sex': 'male', 'number': '02'}
{'name': 'xiaohong', 'sex': 'female', 'number': '03'}进程已结束,退出代码 0

例2:字典中嵌套列表

student = {'name': 'xiaoming', 'sex': 'male', 'number': '01', 'choose_class': ['高数', '英语', '大物']}
print(student['name'].title() + '的选课有:')
for stu in student['choose_class']:print(stu)

输出:

Xiaoming的选课有:
高数
英语
大物进程已结束,退出代码 0

例3:字典中嵌套字典

students = {'stu1': {'name': 'xiaoming', 'sex': 'male', 'number': '01', 'choose_class': '高数'},'stu2': {'name': 'xiaogang', 'sex': 'male', 'number': '02', 'choose_class': '英语'},'stu3': {'name': 'xiaohong', 'sex': 'female', 'number': '03', 'choose_class': '电路'},
}
for stu_name, stu_info in students.items():print(stu_name, stu_info)

输出:

stu1 {'name': 'xiaoming', 'sex': 'male', 'number': '01', 'choose_class': '高数'}
stu2 {'name': 'xiaogang', 'sex': 'male', 'number': '02', 'choose_class': '英语'}
stu3 {'name': 'xiaohong', 'sex': 'female', 'number': '03', 'choose_class': '电路'}进程已结束,退出代码 0
  1. 成员赋操作
        判断某个值是否在字典的键 key 中,不能判断该值是否在值 value 中。

输入:

student = {'name': 'xiaoming', 'sex': 'male', 'number': '01', 'choose_class': '高数'}
print('name' in student)
print('高数' in student)

输出:

True
False进程已结束,退出代码 0
  1. 迭代:for 循环
    输入:
student = {'name': 'xiaoming', 'sex': 'male', 'number': '01', 'choose_class': '高数'}
print('遍历 key :')
for key in student:  # 遍历 keyprint(key)print('\n遍历 value :')
for value in student.values():  # 遍历 valueprint(value)print('\n打印字典所有内容,包括key和value :')
for key in student:                 # 打印字典所有内容,包括key和valueprint(key, student[key])print('\n打印字典所有内容 :')
for key, value in student.items():  # 打印字典所有内容print(key, value)

输出:

遍历 key :
name
sex
number
choose_class遍历 value :
xiaoming
male
01
高数打印字典所有内容,包括key和value :
name xiaoming
sex male
number 01
choose_class 高数打印字典所有内容 :
name xiaoming
sex male
number 01
choose_class 高数进程已结束,退出代码 0

Python 第二章 字典相关推荐

  1. 简学Python第二章__巧学数据结构文件操作

    Python第二章__巧学数据结构文件操作 欢迎加入Linux_Python学习群  群号:478616847 目录: 列表 元祖 索引 字典 序列 文件操作 编码与文件方法 本站开始将引入一个新的概 ...

  2. 《Reids 设计与实现》第二章 字典

    <Reids 设计与实现>第二章 字典 文章目录 <Reids 设计与实现>第二章 字典 一.字典 1.简介 2.字典的实现 3.哈希算法 4.解决键冲突 5.rehash 6 ...

  3. Python第二章相关知识补充

    经过这周的Python课堂,第二章的知识点可以说是被彻头彻尾地讲了一下,所以我在此将上一篇发布的博客内容也加以完善. 2.1.3 列表元素的删除 在学习了列表元素的增加以后,删除列表元素的方法也可以进 ...

  4. Python第二章课后总结

    最近的教学进度进入了第二章,这一章主要讲述了Python中常用的序列结构:列表.元组.字典.字符串.集合等.通过这些序列的学习在今后可以有效实现一些复杂的数据结构和模拟基本操作.那么接下来就给出我个人 ...

  5. Python 第二章-列表和元组

    第二章-列表和元组 2.0       在Python中,最基本的数据结构是序列(sequence).序列中的每个元素被分配一个序列号-即元素的位置, 也称为索引.第一个索引是0,第二个是1,以此类推 ...

  6. 流畅的python第二章, 列表和元组和数组

    概述 这一张标题其实是序列构成的数组,其实也无所谓了, 站在小白的角度来讲,就是讲了讲列表, 元组, 数组的一些用法,这里站在我的角度上说说我的看法好了. 目录 列表推导,原则和一些问题, 和一些扩展 ...

  7. 2的32次方减1用python,第二章python入门

    2.1 环境的安装 解释器:py2.py3 开发工具:pycharm 2.2编码 2.2.1编码基础 初识编码 ASCII码 :英文 8位表示一个东西 2**8 ,8位等于一个字节 Unicode:( ...

  8. machine learn in python 第二章2.1.1

    1大约 sklearn.datasets from sklearn.datasets import load_iris import numpy as np data = load_iris() da ...

  9. python (第二章)数据结构

    文章目录 2.5 对序列使用 +和 × 建立由列表组成的列表 2.6序列的增量赋值(+=和×=) 关于 +=的谜题 补充:extend()方法和+有什么区别呢? 2.7 list.sort方法和内置函 ...

  10. Python第二天(字典)

    字典 键:值对 >>> wuang={'zhang':1992,'chen':1990,'ren':1992} >>> wuang {'chen': 1990, ' ...

最新文章

  1. mysql 5.5半同步复制功能部署
  2. 跳转控制语句 break || continue || goto
  3. 中值滤波scipy.signal.medfilt()方法
  4. 路径中 “./“、“../“、“/“ 代表的意思
  5. 弹出框页面中使用jquery.validate验证控件
  6. 00_设计模式6大原则
  7. JavaSE——类集(下)(Set、Comparable、Collections、Comparator、Map)
  8. php跳过代码,PHP利用continue实现跳过本次循环中剩余代码的注意点
  9. SAP License:飘在SAP日子之二-售前的产生与发展
  10. sever2008 ad用户和计算机不见,windows-server-2008 – 当我使用Powershell将用户添加到安全组时,它们不会显示在AD中...
  11. html期末作品_声来不凡丨同学快来!这份期末考试卷由你来批改!
  12. oracle 19c ora-01017,Oracle 19c RMAN 连接PDB ORA-01017 错误解决方法
  13. 24点自动出题,可打印,A4排版
  14. 项目管理-软件:国内外知名IT项目管理工具【Worktile、PingCode、Jira、Clarizen、禅道】
  15. CS61A 2021Spring Lab: Cats
  16. ERP管理web后台_数字化、智能化工厂管理系统原型、erp生产管理、仓库管理、采购管理、设备能源管理、计划管理、数字化工厂erp管理系统、生产计划、采购计划、用料请领、产品bom、工序管理、车间设备
  17. 店盈通:拼多多推广技巧步骤
  18. java处理excel,将xlsx转xls
  19. java获取date的时分秒_java Date简单的 获得时分秒代码
  20. Linux三剑客 grep sed awk 详细使用方法

热门文章

  1. cnzz.php,php,curl_PHP curl抓取cnzz统计数据,php,curl,cnzz - phpStudy
  2. c语言程序员表白的语录,程序员一句话表白情书
  3. ITIL学习笔记——核心流程之:服务台
  4. [BZOJ4699]树上的最短路(最短路+线段树)
  5. 给计算机老师的元旦祝福,送给老师的元旦祝福语(精选50句)
  6. c语言二重循环的盒图怎么画,5循环结构程序设计
  7. Windows电脑添加打印机
  8. QQ、UC手机浏览器访问电脑版网页
  9. python菱形继承参数问题_菱形继承问题
  10. access_ok函数