字典的定义和访问

1、字典的定义和访问

字典就是键值对的集合。 定义集合要使用花括号{}

xName = { key:value,key:value }

xName我们自己定义

key可以是数字或者字符串类型(也可以是布尔类型)

value可以是任意类型的数据

代码段1:

# 字典的定义:键值对stu = {'name':'马瑞鹏','age':20,'gender':'男'}# 字典的使用print(stu['name'])print(stu['age'])print(stu['gender'])

运行结果:

马瑞鹏

20

2、字典数据的添加、删除、修改和字典列表的区别

访问数据stu1[‘name’]

添加键值对

创建空字典

修改值

删除键值对 del()  del

代码段2:

# 字典的定义:键值对stu = {'name':'马瑞鹏','age':20,'gender':'男'}# 字典的添加(添加rank,排名是1)stu['rank'] = 1print(stu)# 修改年龄stu['age'] = 18print(stu)del stu['age']print(stu)

运行结果:

{'name': '马瑞鹏', 'age': 20, 'gender': '男', 'rank': 1}

{'name': '马瑞鹏', 'age': 18, 'gender': '男', 'rank': 1}

{'name': '马瑞鹏', 'gender': '男', 'rank': 1}

字典和列表的区别:

1、列表是通过自动的索引来访问的;字典是通过自己定义的key键来访问的

2、列表里面的数据是有序的,它的顺序决定了访问它的索引;字典里面的键值对是无序的,是通过自定义的key来访问的(键不能重复,重复会被覆盖)

有序和无序不单体现在定义的时候,也体现在存储在计算机内存上

3、一行定义和多行定义

代码段1:

# 字典的定义可以多行stu = {'name':'马瑞鹏','age':20,'gender':'男'}# 字典的添加(添加rank,排名是1)print(stu)

运行结果:{'name': '马瑞鹏', 'age': 20, 'gender': '男'}

代码段2:

l1 = ['Maruipeng','chenyijie','zhangwanjing']l2 = ['Maruipeng','chenyijie','zhangwanjing','Maruipeng','chenyijie','zhangwanjing''Maruipeng','chenyijie','zhangwanjing''Maruipeng','chenyijie','zhangwanjing']print(l1)print(l2)

运行结果:

['Maruipeng', 'chenyijie', 'zhangwanjing']

['Maruipeng', 'chenyijie', 'zhangwanjing', 'Maruipeng', 'chenyijie', 'zhangwanjingMaruipeng', 'chenyijie', 'zhangwanjingMaruipeng', 'chenyijie', 'zhangwanjing']

代码段3:

# String类型如果要多行注释需要加\str = "ssbsbjskAJBSJKAAAAAAAAAAAAAAAAAAAA" \"SBJAKSBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" \"BSJKKKKKKKK" \"BSJKKKKKKKKK"print(str)

运行结果:

ssbsbjskAJBSJKAAAAAAAAAAAAAAAAAAAASBJAKSBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBSJKKKKKKKKBSJKKKKKKKKK

列表和字典嵌套使用

嵌套使用:

列表的元素可以是某个字典,字典的键值对中的值可以是一个列表

列表里面嵌套字典:

# 列表的定义可以多行

stu = {'name':'马瑞鹏','age':20,'gender':'男'}

students = [{'name':'马瑞鹏','age':20,'gender':'男'},

{'name':'孙畅煊','age':20,'gender':'男'},

{'name': '陈奕洁', 'age': 20, 'gender': '女'},

{'name': '张宛靖', 'age': 20, 'gender': '女'}

]

print(students[1])

print(students[1]['age'])

print(students[2]['gender'])

运行结果:

{'name': '孙畅煊', 'age': 20, 'gender': '男'}

20

字典中嵌套列表:

stu = {'name':'马瑞鹏','age':20,'gender':'男'}stu1 = {'name':"陈龑",'age':19,'gender':'男','hobby':["小米","华为","苹果"]}students = [{'name':'马瑞鹏','age':20,'gender':'男'},{'name':'孙畅煊','age':20,'gender':'男'},{'name': '陈奕洁', 'age': 20, 'gender': '女'},{'name': '张宛靖', 'age': 20, 'gender': '女'},stu1]print(stu1)print(students[4])print(students[4]['hobby'])

运行结果:

{'name': '陈龑', 'age': 19, 'gender': '男', 'hobby': ['小米', '华为', '苹果']}

{'name': '陈龑', 'age': 19, 'gender': '男', 'hobby': ['小米', '华为', '苹果']}

['小米', '华为', '苹果']

5、如何判断两个字典是否相等

可以通过==判断两个列表或者两个字典里面的内容是否是相同的,列表比较内容及顺序,字典只比较键值对的内容是否一致,不比较顺序

代码段1:

l1 = ["Zhangsan","MaRuipeng"]l2 = ["MaRuipeng","Zhangsan"]l3 = ["MaRuipeng","Zhangsan"]print(l1 == l2)print(l2==l3)

运行结果:

False

True

代码段2:

d1 ={'stu1':"马瑞鹏","stu2":"张宛靖","stu3":"陈奕洁"}d2 ={"stu2":"张宛靖",'stu1':"马瑞鹏","stu3":"陈奕洁"}print(d1==d2)

运行结果:

True

注意:字典里面的键可以是数字

代码段3:

d1 ={1:"马瑞鹏",2:"张宛靖",3:"陈奕洁"}print(d1)

运行结果:

{1: '马瑞鹏', 2: '张宛靖', 3: '陈奕洁'}

注意:不能访问不存在的键

代码段4:

d1 ={1:"马瑞鹏",2:"张宛靖",3:"陈奕洁"}print(d1[1])

运行结果:马瑞鹏

练习:创建一个字典存储朋友的生日,方便通过朋友的名字 访问到朋友的生日

代码段5:

# 创建一个字典存储朋友的生日,方便通过朋友的名字 访问到朋友的生日birthdaies = {'mrp':'9月29日',"zhj":"5月13日"}print(birthdaies['mrp'])print(birthdaies['zhj'])

运行结果:

9月29日

5月13日

6、使用keys和values取得键集合和值集合

字典的一些方法:

1、keys() 返回所有键的集合(不是列表类型,不用管什么类型,可以通过for遍历)

2、values()返回所有值的集合

3、items() 返回所有键值对的集合(这里的键值对使用元组数据类型)

代码段1:

stu = {'name':'马瑞鹏','age':20,'gender':'男'}for k in stu.keys():print(k)for v in stu.values():print(v)keys = list(stu.keys())values = list(stu.values())print(keys)print(values)

运行结果:

name

age

gender

马瑞鹏

20

['name', 'age', 'gender']

['马瑞鹏', 20, '男']

可以通过list()方法把上面的集合转成真正的列表 (在range的时候用过)

list(d.keys())

list(d.values())

list(d.items())

代码段4:

stu = {'name':'马瑞鹏','age':20,'gender':'男'}print(stu.items())

运行结果:

dict_items([('name', '马瑞鹏'), ('age', 20), ('gender', '男')])

7、遍历字典的两种方法

1、for i in d.items():

i[0] i[1]

代码段1:

stu = {'name':'马瑞鹏','age':20,'gender':'男'}for i in stu.items():print(i)print(i[0],i[1])

运行结果:

('name', '马瑞鹏')

name 马瑞鹏

('age', 20)

age 20

('gender', '男')

gender 男

代码段2:

stu = {'name':'马瑞鹏','age':20,'gender':'男'}items = list(stu.items())print(items)

运行结果:

[('name', '马瑞鹏'), ('age', 20), ('gender', '男')]

2、for k,v in d.items() :

k,v

代码段2:

stu = {'name':'马瑞鹏','age':20,'gender':'男'}for k,v in stu.items():print(k)print(v)

运行结果:

name

马瑞鹏

age

20

gender

8、判断键是否存在和设置键的默认值

检查字典中是否存在值或者键使用in或者not in,当不指定keys和values的时候默认是检查键集合。

代码段1:

stu = {'name':'马瑞鹏','age':20,'gender':'男'}res = 'gender' not in stu.keys()print(res)res2 = '马瑞鹏' in stu.values()print(res2)# 默认判断键res3 = 'gender' in stuprint(res3)res4 = '马瑞鹏' in stuprint(res4)

运行结果:

False

True

True

False

使用get取得值,防止报错。

d.get(key,defaultValue)

设置默认值:d.setdefault(key,value)

如果key不存在,就添加key-value键值对,如果存在,不做任何事情

代码段2:

stu = {'name':'马瑞鹏','age':20,'gender':'男'}stu.setdefault("name","马瑞杰")stu.setdefault("hobby",'英语、游泳')print(stu['name']+"的爱好是:"+stu['hobby'])

练习题

  1. 创建一个包含多个键值对的字典
  2. 遍历打印出所有的键key
  3. 遍历打印出所有的值value
  4. 遍历打印所有的键值对
  5. 删除某一个键值对

代码:

# 1、创建一个包含多个键值对的字典course = {'数据结构':"史蕊",'计算机网络':"刘景森",'计算机组成原理':"袁泉"}# 2、遍历打印出所有的键keyfor k in course.keys():print(k)# 3、遍历打印出所有的值valuefor v in course.values():print(v)# 4、遍历打印所有的键值对for k,v in course.items():print("教"+k+"的老师是"+v)# 5、删除某一个键值对del course['计算机组成原理']print(course)

运行结果:

数据结构

计算机网络

计算机组成原理

史蕊

刘景森

袁泉

教数据结构的老师是史蕊

教计算机网络的老师是刘景森

教计算机组成原理的老师是袁泉

{'数据结构': '史蕊', '计算机网络': '刘景森'}

Python第六章 字典相关推荐

  1. 《Python从入门到实践》读书笔记——第六章 字典

    <Python从入门到实践>读书笔记--第六章 字典 1. 一个简单的字典 alien_0 = {'color': 'green', 'points': 5}print(alien_0[' ...

  2. Python编程:从入门到实践(第二版)随书敲代码 第六章 字典

    alien.py # 第六章 字典 # 6.1 一个简单的字典 alien_0 = {'color': 'green', 'points': '5'} print(alien_0['color']) ...

  3. python归一化 增大差异_简学Python第六章__class面向对象编程与异常处理

    Python第六章__class面向对象编程与异常处理 欢迎加入Linux_Python学习群 群号:478616847 目录: 面向对象的程序设计 类和对象 封装 继承与派生 多态与多态性 特性pr ...

  4. 宇文成 Python 第六章 列表和元组

    Python 第六章 列表和元组 #!/usr/bin/python -- coding:utf-8 -- @Author : Yu Wencheng @Time : 2020/9/5 17:04 & ...

  5. Python第四章-字典

    第四章 字典-当索引不好用时 4.0     字典可以理解成是C++里的map,可以映射任何类型.字典这种结构类型称为映射(mapping).   字典是Python中唯一内建的映射类型,字典中的值并 ...

  6. python 第五章 字典

    python 第五章 # # !/usr/bin/python # # -*- coding: utf-8 -*- # # @File : 总结.py # # @time : 2019-07-1010 ...

  7. python第六章函数课后答案_浙大PTA-Python题库 函数题(6-1~6-6)题解

    其他各章题解链接如下 浙大PTA-Python题库 编程题第一章(1-1~1-3)题解 https://blog.csdn.net/zimuzi2019/article/details/1070206 ...

  8. 《Python编程 从入门到实践》 一、基础知识 第六章 字典

    6.1一个简单的字典 来看一个游戏,其中包含一些外星人,这些外星人的颜色和点数各不相同,下面是一个简单的字典,存储了有关特定外星人的信息: alien_0={'color':'green','poin ...

  9. python 第六章 函数

    1.函数的定义 def 名称(形参): 函数体 2.函数的调用 名称(实参) 单独文件:模块 调用方式--模块.名称 3.函数的参数类型 1.位置参数: def add(a,b):add(2,3) # ...

最新文章

  1. 程序员的学习方法的一些总结
  2. 【CentOS 7笔记24】,实验中发生的磁盘小故障#
  3. 在JavaScript文件中读取properties文件的方法
  4. vue.js实现价格格式化
  5. js(Dom+Bom)第八天—Swiper(插件)
  6. CMU Database Systems - Sorting,Aggregation,Join
  7. 5分钟搞定Loki告警多渠道接入
  8. python执行过程打印,如何在pytest运行过程中看到正常的打印输出?
  9. carry函数在C语言中用法,CArry的使用完整版.doc
  10. 安装Ubuntu系统
  11. SQLyog的下载与安装
  12. 线性分类器三种最优准则
  13. 【手持式微波频谱分析仪】真正便携且功能强大的仪器 - 欧洲制造
  14. 机器学习——图像分类
  15. 虚假评价检测(Spam Detection)最新工作综述
  16. 计算机超级皇冠关键词是什么,搜狗推广服务
  17. 计算机音乐谱子十年,十年曲谱钢琴曲_十年 钢琴谱
  18. 关于bootstrap--表格(table的各种样式)
  19. 炔烃+叠氮“点击化学”(Click chemistry)试剂,你值得拥有
  20. Hack The Box - Meta 利用Exiftool远程代码执行漏洞获取webshell,ImageMagrick命令执行漏洞横向提权,更改环境配置SUDO纵向提权

热门文章

  1. 程序员的爱情数字表白
  2. 【PI应用】用Java查询雅虎天气并解析Json数据
  3. int与float深入理解
  4. PAT(甲级)2018年秋季考试 7-1 Werewolf - Simple Version (20 分)
  5. 极速office(Word)怎么快速插入空白页
  6. python的输出命令是什么意思_python输出语句print的用法是什么?_后端开发
  7. 2021极术通讯-自动驾驶穿越“生死线”
  8. Mac设置安装任何来源的第三方软件
  9. android使用RTMP实现录屏直播推送音视频(已在享学公众号发表)
  10. pe修改2008服务器的快捷键,PE, *PEDIT(多段线编辑)怎样修改快捷键