本章字典篇,比较的重要,所以有比较多的练习小实战,一起来看看吧。

字典

什么是字典:

字典:是一系列的键值对,每一个键都会有对应的一个值关联,它们可以是数字 ,字符串,列表以及字典本身。用{}来表示。

特点:

1. 查找和插入的速度极快,不会随着key的增加而增加;

2. 需要占用大量的内存,内存浪费多。

# 创建一个字典airship = {'color':'yellow','year':'100','qingan':'托马'}

这个就是字典,'color'、'year'、'qingan'就是键,'yellow'、100、托马就是值,我们创建的这个飞船字典,还可以对它进行访问哦!

airship = {'color': 'yellow', 'year': '100', 'qingan': '托马'}print(airship['qingan']+"的飞船颜色是"+airship['color'] +"今年"+ airship['year']+"岁了")

注意:我们可以通过访问飞船的键来获取它的值。

get方法

另外介绍一种获取值得方法.get()

# 创建一个字典airship = {'color':'yellow','year':'100','qingan':'托马'}i = airship.get('color')print(i)print(a.get('yearr','不存在这个键'))# yellow# 不存在这个键

小实战

l1 = {'name': '托马', 'age': 18, 'sex': '男'}l2 = {'name':'菜狗','age':20,'sex':'女'}l3 = {'name':'菜鸡','age':22,'sex':'男'}list_ = [l1,l2,l3]for i in range(len(list_)):    print(list_[i].get('name'))# 托马# 菜狗# 菜鸡

此处结合了前面所学的列表知识,一并做了一个练习。将字典嵌入到列表中,用上for循环来循环list_列表的长度,也就是len函数。用列表索引取值的方式获取到i,i来对len的长度进行循环,list_中有三个变量,所以长度为3,索引从0开始,再用get获取到指定的键,并进行值的打印。

zip函数创建字典

zip函数前面列表处介绍过的,此处再来运用一番:

a = ['name','age','sex']b = ['托马',18,'男']c = dict(zip(a,b))print(c)# {'name': '托马', 'age': 18, 'sex': '男'}

可以说是一一对应的生成了字典。

fromkeys函数

d = dict.fromkeys(['name','age','sex'])print(d)# {'name': None, 'age': None, 'sex': None}

注意了,None是一个值!!!

添加键值对

# 创建一个字典airship = {'color': 'yellow', 'year': '100', 'qingan': '托马'}airship['money'] = 100000airship['driving_speed'] = 2000print(airship)

这里我们添加了两个新的键与值。键为'money'、'driving_speed',值为10000,2000,中间用=号连接起来。添加键值对的格式就是这样的。

小伙伴们也可以先创建一个空字典,再进行添加键值对哦,格式:airship = {},就是花括号里面什么也不写 ,就是空字典了。

删除键值对

airship = {'color': 'yellow', 'year': '100', 'qingan': '托马'}del airship['year']print(airship)

我们也是使用del来进行删除,关于这个方法,托马在前面讲过哦,忘记了的赶紧去复习一下。

另外pop也是可以的pop(key)也是可以删除的哦。

修改键值对

airship = {'color': 'yellow', 'year': '100', 'qingan': '托马'}airship['color'] = 'red'print(airship)

修改字典中的值,我们直接指定键就可以了,像北这样,指定color你可以将颜色改成任何一种颜色哦。

弹出

airship = {'color': 'yellow', 'year': '100', 'qingan': '托马'}# 指定弹出键所对应的值a = airship.pop('color')print(a)# yellow

还有一种方法是popitem

airship = {'color': 'yellow', 'year': '100', 'qingan': '托马'}a = airship.popitem()print(a,airship)airship.popitem()print(airship)# ('qingan', '托马') # {'color': 'yellow', 'year': '100'}

这里你需要注意的是如果你使用了方法popitem后,你用变量接收了它,那么打印出来的只会是元组。如果直接打印airship,就可以看出弹出的是字典中最后那一个键值对。

实战综合运用

当你想写很多的键值对到字典中时,你可以:

language = {    'tom' : 'python',    'tim' : 'java',    'zhangsan' : 'c',    'lisi' : 'php',    'wangwu' : 'html',}print(language)

实战一

当你想输出王五喜欢的课程,并且首字母要求大写时,你可以:

language = {    'tom' : 'python',    'tim' : 'java',    'zhangsan' : 'c',    'lisi' : 'php',    'wangwu' : 'html',}favorite = language['wangwu'].title()print(favorite)# Html

for循环

我们接下来结合前面两章所学,运用到字典上来,看例子:

language = {    'tom' : 'python',    'tim' : 'java',    'zhangsan' : 'c',    'lisi' : 'php',    'wangwu' : 'html',}for key,values in language.items():    print(f"KEY:{key}   VALUES:{values}")# KEY:tom   VALUES:python# KEY:tim   VALUES:java# KEY:zhangsan   VALUES:c# KEY:lisi   VALUES:php# KEY:wangwu   VALUES:html

这里我们用到了for循环,这里的意思是循环打印出language的键与值,我们自己定义的key和values一个代表键一个代表值,这两个小伙伴们想怎么定义就这么定义,但是定义变量的注意事项要记得哦,key是键,values是值,程序上的.items(),这是 一个方法,它会返回一个键值对列表,如果不加就会报错哦。

遍历key值

language = {    'tom' : 'python',    'tim' : 'java',    'zhangsan' : 'c',    'lisi' : 'php',    'wangwu' : 'html',}for key in language.keys():    print(f"KEY:{key}")

遍历key值为什么用的是keys?key值是一种说法,字典是键与值一起的组合,所以这里取名为key值。keys是方法,用来取值的。

实战2

language = {    'tom': 'python',    'tim': 'java',    'zhangsan': 'c',    'lisi': 'php',    'wangwu': 'html',}friend = ['lisi', 'liehuang', 'wangwu']# 用变量循环language字典中的键for key in language.keys():    print(key.title())    # 判断key是否再friend列表中    if key in friend:        # 定义一个变量来接收存在的键        friends = language[key].title()        print(f"{key.title()}, I love {friends}")

遍历所有的值

language = {    'tom': 'python',    'tim': 'java',    'zhangsan': 'c',    'lisi': 'php',    'wangwu': 'php',}for value in language.values():    print(value)

注意了,这里输出的结果是有重复的哦。怎么样去重呢?看下面

去重

那么我们要去重又要输出值怎么办呢?我们可以用set方法

language = {    'tom': 'python',    'tim': 'java',    'zhangsan': 'c',    'lisi': 'php',    'wangwu': 'php',}for value in set(language.values()):    print(value)

列表字典

dictt = {'color': 'red', 'year': 1}dictt1 = {'color': 'yellow', 'year': 2}dictt2 = {'color': 'blue', 'year': 3}all_dictt = [dictt, dictt1, dictt2]print(all_dictt)for all_dictts in all_dictt:    print(all_dictts)# [{'color': 'red', 'year': 1}, {'color': 'yellow', 'year': 2}, {'color': 'blue', 'year': 3}]# {'color': 'red', 'year': 1}# {'color': 'yellow', 'year': 2}# {'color': 'blue', 'year': 3}

我们创建三个字典,再将字典放进一个列表中,再进行循环打印,并输出,也许小伙伴会觉得复杂,此处我们还是得学习的,后面的selenium以及appium亦或者接口自动化需要用到读取表格哦传输值哦。

实战三

我们将上述dictt字典放入一个空的列表,并让这个字典连续打印十次

lists = []# 循环十次for list_2 in range(1, 11):    dictt = {'color': 'red', 'year': 1}    # 将字典添加到列表中    lists.append(dictt)# 定义一个变量循环遍历列表for list_3 in lists:    print(list_3)print(f"一共创建了:{list_2}个字典")

结果行数太多了就不写出来了,可以自己试试效果如何。

也可以对其进行一定的修改,比如修改前三个的颜色:

lists = []# 循环十次for list_2 in range(1, 11):    dictt = {'color': 'red', 'year': 1}    # 将字典添加到列表中    lists.append(dictt)# 使用一个新的循环去循环列表的前三个字典for lists_1 in lists[:3]:    # 如果color等于red,则将color进行更改,year也可以进行更改    if lists_1['color'] == 'red':        lists_1['color'] = 'green'        lists_1['year'] = 2# 定义一个变量循环遍历列表,显示前四个for list_3 in lists[:4]:    print(list_3)print(f"一共创建了:{list_2}个字典")

如果你觉得为什么判定red不判定year就可以更改,因为他们再同一个字典中,不放心的小伙伴可以用if对year多进行一次判断哦。

** 字典中可以储存列表,看下面的操作你就明白了:**

pak = {    'dog': 'yellow',    'birds': ['red', 'blue'],}print(f"动物园里有:{pak['dog']}颜色的狗")for paks in pak['birds']:    print("鸟的颜色有:\t" + paks + "的")

这里我们在字典中加入了列表,'birds'的值为一个列表,我们想要输出对应的值,就必须使用for循环才能一一输出,看示例,我们定义一个变量循环遍历pak字典中'birds'键所对应的值,并打印这个变量,就能得到我们想要的值了。

实战四

pak = {    'dog': ['yellow', 'black'],    'birds': ['red', 'blue'],    'cat': ['white', 'orange'],}for animals,color in pak.items():    print(f"{animals}颜色都有:")    for color_num in color:        print(color_num.title())# dog颜色都有:Yellow Black# birds颜色都有:Red Blue# cat颜色都有:White Orange

这里我们使用了多个列表值,并用for循环进行遍历所有的颜色!你们输出的格式不是我注释的那个样子,这里我是修改了格式,所以不必纠结。

字典存储字典

number = {    '张三': {        'first_name': '张',        'last_name': '三',        'height': 180,    },    '李四': {        'first_name': '李',        'last_name': '四',        'height': 170,    },}for usename, usenames in number.items():    print(f"{usenames['first_name']}{usenames['last_name']}{usenames['height']}")#第二种写法number = {    '张三': {        'first_name': '张',        'last_name': '三',        'height': 180,    },    '李四': {        'first_name': '李',        'last_name': '四',        'height': 170,    },}for usename, usenames in number.items():    full_name = f"{usenames['first_name']}{usenames['last_name']}"    location = usenames['height']    print(f"{full_name}、身高:{location}")

这两种写法最后的结果都是一样的,写法上稍微有一点点不同,可能第一种小伙伴更容易理解。

第二种只是额外给了一个变量而已,而第一种方法直接调用了定义的变量指定内部字典纸进行输出。很多小伙伴肯定会问,外部字典键为什么不输出,要想输出,直接将usename加载print里面就好了,这里只是便于观看而已。

实战五

name_user = {}# i = Truewhile True:  # while i    # 提示输入名称    name = input("请输入课程:")    teacher = input("请输入老师名称:")    # 写入字典    name_user[name] = teacher    last = input("还有吗?y/n\t")    #进行输入判断,如果为no则结束循环    if last == 'no':        break        # i = False# 用循环输出键与值for names, value in name_user.items():    print(f"我得课程是{name},我的老师是{teacher}")

这里可以自动填入键值对,所以还是值得大家好好看看的。

Python快速上手系列--字典--详解实战篇相关推荐

  1. Python快速上手系列--列表--详解篇

    本章有部分超纲内容,可作为了解,提前学习学习. 列表 列表,主要使用[ ]来表示,我这里的加了一个空格,便于看清哦!看下面的例子 # 这里声明一个变量,后续便于输出class_name = [&quo ...

  2. Python快速上手系列--类--详解篇

    本章是自动化测试的真正开始,因为在后续的过程中,你会接触到unittest框架,pytest框架,而不仅仅只是写一个函数+selenium脚本这么简单了. 1.创建类 1.1.了解类 我们首先了解一下 ...

  3. Python爬虫入门系列——Urllib详解

    Python爬虫入门系列--Urllib详解 1.背景 1.1 初识爬虫 1.2 合法性 1.3 robots协议 2.要求 2.1 当前开发环境 2.2 编程基础 3.快速上手Urllib 3.1 ...

  4. c语言 字符串转运算符,快速上手系列-C语言之基础篇(二)数据类型与运算符...

    在上一篇文章<快速上手系列-C语言之基础篇(一)>中写了关于C语言的程序结构,关键字及控制语句.本篇主要写写C语言中数据类型,以及运算符相关方面的知识. 一.变量与常量 1.常量:在程序运 ...

  5. python基本数据类型之字典详解

    文章目录 字典(dict) 一.定义和表示 二.字典的基本操作 2.1 查看(取值) 1.key在字典中取值案例: 2.key不在字典中取值会报错,如果想要不报错,可用==get方法设置默认值== 2 ...

  6. Python快速上手系列--循环结构--基础篇

    本篇将讲述前几章都有提起的循环,非常的重要,对于自动化测试的脚本来说,运用的都比较的频繁.好好看. if语句 首先我们先来学习一下if语句,因为它通常会和for循环搭配使用,频率极高. if 关键字或 ...

  7. 【MySQL】数据库机房架构与跨城容灾详解(实战篇)(MySQL专栏启动)

  8. 《 Python List列表全实例详解系列(四)》__列表删除元素(4种方法)删除重复元素(去重)(8种方法)

    <  Python List列表全实例详解系列(四)> __列表删除元素(4种方法)删除重复元素(去重)(8种方法) 我的技术成长&学习资料整理分享之路 我遇到问题查找资料时,经常 ...

  9. 《 Python List 列表全实例详解系列(九)》__列表反转(6种方法)

    < Python List 列表全实例详解系列(九)> __列表反转(6种方法) 本章目录: 十一.列表反转的6种方法 (11.1).通过列表的切片操作实现列表反转 (11.2).使用列表 ...

最新文章

  1. python turtle画气球-micro:bit + LoRa 实现气球追踪
  2. RocketMQ 核心
  3. plsql(轻量版)_异常处理机制
  4. Eclipse不给提示no default proposals
  5. highcharts 怎么去掉鼠标悬停效果_腿上肥胖纹怎么去掉 大腿肥胖纹怎么消除
  6. (21)npm scripts 实现自动化构建的最简方式
  7. .net post的参数如果出现乱码如何解决!
  8. Android 7.1 App Shortcuts使用
  9. APPLE 知识模块初步设计
  10. 上海税务局发布2023年第1号文件,全电发票开票试点即将全面扩围!
  11. dell10代cpu装linux,戴尔10代cpu装win7系统及bios设置|戴尔十代cpu台式机装win7
  12. Nullpoint及其相关的报错
  13. Web Work 简介
  14. 你对三农金融了解多少,三农又会带来什么
  15. 使用cucumber ,想把一个完整的流程,写成一个可执行的自动化测试脚本,应该如何划分 Scenario...
  16. vue版本--腾讯地图demo,可搜索关键字和经纬度,显示地图和搜索结果列表
  17. Git工作流学习笔记
  18. mysql otp poolboy_erlang驱动使用mysql-otp
  19. linux 下计算器命令bc/日历cal/日期date
  20. 视觉检测螺钉大小matlab代码,基于机器视觉的二维尺寸检测.pdf

热门文章

  1. FANUC机器人SRVO-348故障报警分析及处理对策
  2. Gorrila算法论文学习
  3. 百度浏览器Android6.0,有些安卓机型百度浏览器h5唤起app失效
  4. 中国无线音乐搜索综合测评结果
  5. Elasticsearch---spring-boot-starter-data-elasticsearch整合攻略详解
  6. 刘涛入驻聚划算直播间:重新定义明星带货
  7. 【玩转嵌入式屏幕显示】(五)TFT-LCD屏幕显示图片
  8. 黑马瑞吉外卖之菜品的启售停售
  9. 无限机遇 无穷挑战 顺势而为 迎难而上
  10. “币圈贾跃亭”天价碰瓷巴菲特,王小川隔空回应:骗子!