扎实基础深刻篇(五):字典也就是个弟弟

在本篇博客中,你将能学习到可以将相关信息关联起来的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获取用户输入。

建议再次复习往期博客增强复习!

相关文章
相关标签/搜索