Python快速上手系列--字典--详解实战篇

简介: Python快速上手系列--字典--详解实战篇

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

字典

什么是字典:

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

特点:

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'] = 100000
airship['driving_speed'] = 2000
print(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 = True
while 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}")

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

目录
相关文章
|
2月前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
1月前
|
测试技术 数据库 Python
Python装饰器实战:打造高效性能计时工具
在数据分析中,处理大规模数据时,分析代码性能至关重要。本文介绍如何使用Python装饰器实现性能计时工具,在不改变现有代码的基础上,方便快速地测试函数执行时间。该方法具有侵入性小、复用性强、灵活度高等优点,有助于快速发现性能瓶颈并优化代码。通过设置循环次数参数,可以更准确地评估函数的平均执行时间,提升开发效率。
106 61
Python装饰器实战:打造高效性能计时工具
|
4天前
|
存储 数据采集 数据库
Python爬虫实战:股票分时数据抓取与存储
Python爬虫实战:股票分时数据抓取与存储
|
28天前
|
运维 Shell 数据库
Python执行Shell命令并获取结果:深入解析与实战
通过以上内容,开发者可以在实际项目中灵活应用Python执行Shell命令,实现各种自动化任务,提高开发和运维效率。
56 20
|
1月前
|
JSON 监控 安全
深入理解 Python 的 eval() 函数与空全局字典 {}
`eval()` 函数在 Python 中能将字符串解析为代码并执行,但伴随安全风险,尤其在处理不受信任的输入时。传递空全局字典 {} 可限制其访问内置对象,但仍存隐患。建议通过限制函数和变量、使用沙箱环境、避免复杂表达式、验证输入等提高安全性。更推荐使用 `ast.literal_eval()`、自定义解析器或 JSON 解析等替代方案,以确保代码安全性和可靠性。
45 2
|
2月前
|
小程序 开发者 Python
探索Python编程:从基础到实战
本文将引导你走进Python编程的世界,从基础语法开始,逐步深入到实战项目。我们将一起探讨如何在编程中发挥创意,解决问题,并分享一些实用的技巧和心得。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供有价值的参考。让我们一起开启Python编程的探索之旅吧!
65 10
|
2月前
|
数据采集 存储 XML
python实战——使用代理IP批量获取手机类电商数据
本文介绍了如何使用代理IP批量获取华为荣耀Magic7 Pro手机在电商网站的商品数据,包括名称、价格、销量和用户评价等。通过Python实现自动化采集,并存储到本地文件中。使用青果网络的代理IP服务,可以提高数据采集的安全性和效率,确保数据的多样性和准确性。文中详细描述了准备工作、API鉴权、代理授权及获取接口的过程,并提供了代码示例,帮助读者快速上手。手机数据来源为京东(item.jd.com),代理IP资源来自青果网络(qg.net)。
|
3月前
|
XML JSON API
如何使用Python将字典转换为XML
本文介绍了如何使用Python中的`xml.etree.ElementTree`库将字典数据结构转换为XML格式。通过定义递归函数处理字典到XML元素的转换,生成符合标准的XML文档,适用于与旧系统交互或需支持复杂文档结构的场景。示例代码展示了将一个简单字典转换为XML的具体实现过程。
31 1
|
3月前
|
算法 Unix 数据库
Python编程入门:从基础到实战
本篇文章将带你进入Python编程的奇妙世界。我们将从最基础的概念开始,逐步深入,最后通过一个实际的项目案例,让你真正体验到Python编程的乐趣和实用性。无论你是编程新手,还是有一定基础的开发者,这篇文章都将为你提供有价值的信息和知识。让我们一起探索Python的世界吧!
|
3月前
|
并行计算 调度 开发者
探索Python中的异步编程:从基础到实战
在Python的世界里,异步编程是一种让程序运行更加高效、响应更快的技术。本文不仅会介绍异步编程的基本概念和原理,还将通过具体代码示例展示如何在Python中实现异步操作。无论你是初学者还是有经验的开发者,都能从中获益,了解如何运用这一技术优化你的项目。

热门文章

最新文章

推荐镜像

更多