在本篇博客中,你将能学习到可以将相关信息关联起来的Python字典,以及一些对字典的操做。python
在讲正事以前,不能忘了上一篇博客布置下来的做业:编程
执行如下操做以建立一个程序,该程序模拟网站如何确保每一个人都有惟一的用户名。
•列出包含五个或更多用户名的列表current_users;再列出包含五个新用户名的列表new_users,
确保一个或两个新用户名也在当前用户列表中。
•循环浏览新用户列表,查看每一个新用户名是否已被使用。若是有,请打印一条消息,说明此人须要输入新的用户名。
若是没有使用用户名,请打印一条消息,说明用户名可用。
•确保你的比较不区分大小写。若是使用了“john”,则不该接受“JOHN”
答案以下:app
current_users=["Master","paopao","mary","Alice","jack"] new_users=["mack","tom","Mary","alice","james"] current_users_1=[] for oldname in current_users: oldname=oldname.lower() current_users_1.append(oldname) for newname in new_users: if newname.lower() in current_users_1: print(newname,"你好,你注册的名字已被占用,请从新注册。") else: print(newname,"你好,你注册的名字可用。")
输出结果:学习
mack 你好,你注册的名字可用。
tom 你好,你注册的名字可用。
Mary 你好,你注册的名字已被占用,请从新注册。
alice 你好,你注册的名字已被占用,请从新注册。
james 你好,你注册的名字可用优化
若是有对本段代码不懂的同窗,能够亲自来问我。固然,有更好优化代码方案的,请务必告诉我。网站
一个简单的字典示例 spa
student={"name":"master","age":18} print(student["name"]) print(student["age"])
字典student存储了一个学生的名字和年龄,使用print()来打印结果,会看见:code
master
18blog
字典的概念索引
在python中,字典是一系列的键-值对,每个键都与一个值相对应,使用的符号是大括号{ }。
你可使用键来访问与之相对应的值,与键相关联的值能够是数字、字符串、列表乃至字典。
字典dict的公式:{key1:value1,key2:value2,...}
键和值之间用冒号分隔,键-值对与键值对用逗号隔开。
建立字典并学会如何访问值
咱们来创造一个包含更多学生信息的字典:
student={ "name":"master", "age":18, "sex":"男", "class":"软件一班", "teacher":"Mr.Lee" }
咱们知道,去使用键来访问值:
#获取学生的名字 print(student["name"]) #获取学生的性别 print(student["sex"]) #获取学生的班级 print(student["class"])
能够看到结果以下所示:
master
男
软件一班
添加新的键-值对和修改键的值
首先复习一下列表若是想要添加新的元素的时候,有哪几种方法:
list_1.append() :末尾追加一个新的元素
list_1.insert():某索引位置加入新的元素
小提示:为何不直接命名list?--->关键词不能用来作变量名
字典添加新的键-值对相对于列表是很是方便的:
student["school"]="哈佛大学" student["address"]="热河路"
而后咱们print(student)来看看字典发生了怎么样的变化:
{ 'name': 'master', 'age': 18, 'sex': '男', 'class': '软件一班', 'teacher': 'Mr.Lee', 'school': '哈佛大学', 'address': '热河路' }
是否是很是快速多了,只须要给字典的索引上创一个新的键,等于号后面写上所对应的值,就能够产生新的键-值对了。
那么实际上我这个student字典很是不贴实际的,存在吹牛逼的成分,master考上哈佛大学,有那么牛逼吗?
那么如何修改字典里面的值呢?
student["age"]=20 student["school"]="野鸡大学" print(student)
咱们能够发现,字典修改值和列表修改元素的方法都同样,给指定索引从新定义数据就能够完成修改:
{ 'name': 'master', 'age': 20, 'sex': '男', 'class': '软件一班', 'teacher': 'Mr.Lee', 'school': '野鸡大学', 'address': '热河路' }
如今这个student字典里的信息是否是看上去顺眼多了?
删除键-值对
咱们在上面使用student字典的过程当中,键"teacher":值"Mr.Lee"这一对并无用过。
因此,咱们就考虑删除掉这一对,删除的方法使用del:
del student["teacher"] print(student)
删除的方法,字典和列表也同样,用del删除指定的键,就能删除掉键-值对,再也不出现。
{ 'name': 'master', 'age': 20, 'sex': '男', 'class': '软件一班', 'school': '野鸡大学', 'address': '热河路' }
使用for遍历字典
①遍历全部的键-值对
首先有student字典:
{
'name': 'master', 'age': 20, 'sex': '男', 'class': '软件一班', 'school': '野鸡大学', 'address': '热河路' }
如何将这些数据更为直观的键-值打印在窗口上:
for key,value in student.items(): print("键:",key) print("值:",value) print()
要注意的是,字典并不能直接与for相结合使用:
这时,items()应运而生,它的做用是把字典转换为列表形式,键-值对转换为元组。
dict_items([('name', 'master'), ('age', 20), ('sex', '男'), ('class', '软件一班'), ('school', '野鸡大学'), ('address', '热河路')])
输出结果:
键: name
值: master
键: age
值: 20
键: sex
值: 男
键: class
值: 软件一班
键: school
值: 野鸡大学
键: address
值: 热河路
②遍历字典中的全部键
在这儿,咱们要从新定义一个字典,来帮助你完成更好理解这个小节:
一个学生字典,学生名字为键,年龄为值
student={ "张三":18, "李四":20, "王五":22, "马六":23 }
如今,我要遍历出这个字典的全部人的名字:
for name in student.keys(): print(name)
keys()方法极为有用,也不须要通过一些复杂的转换列表操做,能够直接提取出全部的键。
输出结果:
张三
李四
王五
马六
③遍历字典中的全部值
和上面方法同样,直接使用values方法提取全部的值。
for name in student.values(): print(name)
输出结果:
18
20
22
23
字典的嵌套用法
①列表存储字典元素
咱们建立三个学生信息的字典,含有姓名和年龄:
student1={"name":"张三","age":18} student2={"name":"李四","age":19} student3={"name":"王五","age":20}
而后,咱们能够把这三个字典,存储到列表里做为元素:
student_list=[student1,student2,student3] print(student_list)
输出结果:
[{'name': '张三', 'age': 18}, {'name': '李四', 'age': 19}, {'name': '王五', 'age': 20}]
②字典存储列表值
我在上面提过一句话:
你可使用键来访问与之相对应的值,与键相关联的值能够是数字、字符串、列表乃至字典。
在上面咱们已经见识了数字和字符串类型做为值,如今来看一看列表做为值的状况:
在上面中,咱们认识了张三,李四和王五,如今调查他们的爱好,获得下面的结果
张三的爱好:编程,游泳和打游戏
李四的爱好:编程,看书和踢足球
王五的爱好:撩妹,喝酒和打游戏
而后,他们都是来自软件一班,就用appclass_one做为字典变量,
他们的名字做为键,他们的爱好做为值并用列表的形式:
appclass_one={ "张三":["编程","游泳","打游戏"], "李四":["编程","看书","踢足球"], "王五":["撩妹","喝酒","打游戏"] }
如今,咱们将这个字典数据以更为直观的形式出如今打印窗口:
for people,favourites in appclass_one.items(): print(people+"的爱好以下:") for favourite in favourites: print("\t",favourite) print()
先来看看输出结果:
张三的爱好以下:
编程
游泳
打游戏
李四的爱好以下:
编程
看书
踢足球
王五的爱好以下:
撩妹
喝酒
打游戏
那么要考虑到一些零基础的同窗,可能会一时没法理解代码的原理,我能够给出大概的解释以下:
第一行确定是先提取出键和值出来,items()是转换成列表形式,
缩进以后来到第二行,打印出人名的爱好消息,这时候若是来到第三行直接打印,
第三行直接是一行列表形式的爱好,确定不够直观,并且我不想要看见列表的符号,
因此再对这个列表进行提取每一个元素处理,把每一个元素但独占一行,
“\t”是横向制表符,也就是制造横向空格,让总体效果更为直观。
最后一行的print()属于换行,而后继续访问字典里第二我的名……
③字典存储字典值
字典的值也能够是字典的形式,好比定义一个班级字典,里面有不少学生的信息:
appclass_one={ "student1":{"name":"张三","age":18}, "student2":{"name":"李四","age":19}, "student3":{"name":"王五","age":20} }
若是想像上面同样出题目的话,其实也不用浪费笔墨,多用一次items()方法便可。
做业来袭:
建立一个名为cities的字典,其中将三个城市名用做键,对于每一个城市的所属省份、人口数、是否为省会等等建立一个字典做为值。
而后以更为直观的形式打印出这些信息在输出窗口。
恭喜你!字典在你面前成功地作了弟弟,接下来的一篇博客你将接触到while循环和input获取用户输入。
建议再次复习往期博客增强复习!