本文是跟着鱼C论坛小甲鱼零基础学习Python3的视频学习的,课后题也是跟随每一课所附属的题目来做的,根据自己的理解和标准答案记录的笔记。
第二十五课
测试题:
0.当你听到小伙伴在讨论“映射”、“哈希”、“散列”或者“关系数列”的时候,事实上他们就是在讨论什么呢?
答:都是在说Python的字典。
1.尝试一下将数据(‘F’:70, ‘C’:67, ‘h’:104, ‘i’:105, ‘s’:115)创建为一个字典并访问键‘C’对应的值?
答:#第一种方法
>>> zidian = {'F':70, 'C':67, 'h':104, 'i':105, 's':115}
>>> zidian
{'F': 70, 'C': 67, 'h': 104, 'i': 105, 's': 115}
>>> zidian['C']
67
#第二种方法
>>> zidian = dict((('F',70),('C',67),('h',104),('i',105),('s',115)))
>>> zidian['C']
67
#第三种方法
>>> zidian = dict(F = 70, C = 67, h = 104, i = 105, s = 115)
>>> zidian['C']
67
#第四种方法
>>> zidian = dict([('F',70),('C',67),('h',104),('i',105),('s',115)])
>>> zidian['C']
67
#第五种方法
>>> zidian = dict({'F':70,'C':67,'h':104,'i':105,'s':115})
>>> zidian['C']
67
#第六种方法
>>> zidian = dict(zip(['F', 'C', 'h', 'i', 's'], [70, 67, 104, 105, 115]))
>>> zidian['C']
67
2.用方括号(“[]”)括起来的数据我们叫列表,那么用大括号(“{}”)括起来的数据我们就叫字典,对吗?
答:不正确,用方括号括起来的数据可以变成列表,但是用大括号括起来的数据还要形成有对应对象的映射关系(即 键 与 值 )才能构成字典。
3.你如何理解有些事情字典做得到,但是“万能的”列表却难以实现?
答:列表本身的元素是只有与其所在位置的索引值有对应关系的,而元素与元素之间是无法产生相互映射关系的,并且列表与列表之间要表达映射关系只能通过索引值进行索引之后再提取进行对应,这样会变麻烦很多。所以字典的存在就弥补了这种繁琐过程的缺陷,字典本身内在的元素就通过键(key)与值(value)之间进行了映射关系,所以在调用的时候能很快通过键取得值,省去了列表与列表先索引再对应的过程。
4.下边这些代码,他们都在执行一样的操作吗?你看得出差别吗?>>> a = dict(one=1,two=2,three=3)
>>> b = {'one':1,'two':2,'three':3}
>>> c = dict(zip(['one','two','three'],[1,2,3]))
>>> d = dict([('two',2),('one',1),('three',3)])
>>> d = dict({'three':3,'one':1,'two':2})
答:是的,都是在执行创作一个相同元素对象的字典的操作,差别在于创建字典元素排布的顺序不一样。>>> a = dict(one=1,two=2,three=3)
>>> b = {'one':1,'two':2,'three':3}
>>> c = dict(zip(['one','two','three'],[1,2,3]))
>>> d = dict([('two',2),('one',1),('three',3)])
>>> e = dict({'three':3,'one':1,'two':2})
>>> a
{'one': 1, 'two': 2, 'three': 3}
>>> b
{'one': 1, 'two': 2, 'three': 3}
>>> c
{'one': 1, 'two': 2, 'three': 3}
>>> d
{'two': 2, 'one': 1, 'three': 3}
>>> e
{'three': 3, 'one': 1, 'two': 2}
5.如图,你可以推测出打了马赛克部分的代码吗?
答:马赛克部分的代码是 data.split(',') ,作用是分别把data里面的值分片赋给字典MyDict里面的键。
动动手:
0.尝试利用字典的特性编写一个通讯录程序吧,功能如图:
答:print("""|--- 欢迎进入Rony通讯录程序 ---|
|--- 输入选项数字使用功能 ---|
|--- 1:查询联系人资料. ---|
|--- 2:加入新的联系人. ---|
|--- 3:删除已有联系人. ---|
|--- 4:退出通讯录程序. ---|
""")
txl = {}
while True:
srdm = int(input('请输入通讯录功能代码:'))
if srdm == 1:
xm = input('请输入联系人姓名:')
if xm in txl:
print('为您查询到了:'+ xm + ' 联系电话:' + txl[xm])
continue
else:
print('查询不到此联系人,为您返回初始界面。')
continue
if srdm == 2:
xm = input('请输入联系人姓名:')
if xm in txl:
print('您输入的联系人已存在 -->'+ xm + ' 联系电话:' + txl[xm])
pd = input('是否修改联系人资料?(YES/NO):')
if pd == 'YES':
dh = input('请输入联系人新的电话:')
txl[xm] = dh
print('修改完成,为您返回初始界面。')
continue
else:
print('为您返回初始界面。')
continue
else:
dh = input('请输入联系人电话:')
txl[xm] = dh
print('添加完成,为您返回初始界面。')
continue
if srdm == 3:
xm = input('请输入联系人姓名:')
if xm in txl:
print('请问是否删除此联系人?'+ xm + ' 联系电话:' + txl[xm])
pd = input('(YES/NO):')
if pd == 'YES':
del(txl[xm])
print('删除成功,为您返回初始界面。')
continue
else:
print('为您返回初始界面。')
continue
else:
print('没有找到该联系人,为您返回初始界面。')
continue
if srdm == 4:
break
else:
print('输入有误,为您返回初始界面。')
continue