第二十五讲:字典:当索引不好用时1
一、知识点:
0.字典是python中唯一的映射类型。
1.字典包含两个要素:键(key)和值(value)他们是成对出现的,用大括号括起来,多对存在时用逗号隔开。
2.可以用dict()直接创建字典,如dict1 = dict((('a',90),('b',91),('c',92),('d',93))),创建出来的字典dict1的形式为{'a': 90, 'b': 91, 'c': 92, 'd': 93}
3.dict2 = dict(key1='value1',key2='value2'),则最后的形式为{'key1': 'value1', 'key2': 'value2'}。Python的dict是无序的。
4.改变字典中的某个值dict2['key']='value',插入的方法类似。
--------------------------------------------------------------------我是一条分割线----------------------------------------------------------------------
二、课后作业:
0.当你听到小伙伴们在谈论“映射”、“哈希”、“散列”或者“关系数组”的时候,事实上他们就是在讨论什么呢?
字典,都是一个概念。
1.尝试一下将数据('F':70,'C':67,'h':104,'i':105,'s':115)创建为一个字典并访问键‘C’对应的值。
>>> dict1 = dict((('F',70),('C',67),('h',104),('i',105),('s',115)))
>>> dict1
{'F': 70, 'C': 67, 'h': 104, 'i': 105, 's': 115}
>>> dict1['C']
67
>>> print(dict1['C'])
67
2.用方括号‘[’括起来的数据我们叫列表,那么使用大括号‘{’括起来的数据我们就叫字典,对吗?
错。用大括号括起来的数据如果没有映射关系不能称之为字典。
3.你如何理解有些事情字典做得到,但是“万能的”列表却难以实现?
>>> brand = ['李宁','耐克','阿迪达斯','鱼C工作室']
>>> slogan = ['一切皆有可能','Just do it','Impossible is nothing','让编程改变世界']
>>> print('鱼C工作室的口号是:',slogan[brand.index('鱼C工作室')])
鱼C工作室的口号是: 让编程改变世界
>>> dict1 = {'李宁':'一切皆有可能','耐克':'Just do it','阿迪达斯':'Impossible is nothing','鱼C工作室':'让编程改变世界'}
>>> print('鱼C工作室的口号是:',dict1['鱼C工作室'])
鱼C工作室的口号是: 让编程改变世界
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})
是。都是创建字典{'one': 1, 'two': 2, 'three': 3}。说明python的dict()是无序的,即dict的遍历顺序与初始化顺序是不一样的。
5.如图,你可以推测出打了马赛克部分的代码吗?
分别把data里面的值分片赋给字典MyDict里面的键。data.split(',')
--------------------------------------------------------------------我是一条分割线----------------------------------------------------------------------
三、动动手:
0.尝试利用字典的特性编写一个通讯录程序吧。
print('欢迎进入通讯录程序!')
print('1.查询联系人')
print('2.插入联系人')
print('3.删除联系人')
print('4.退出通讯录')
contact = {'张三':123,'李四':456,'王五':789,'赵六':987}
while 1:
temp = int(input('请输入你的选择:'))
if temp == 1:
name = input('请输入要查询的姓名:')
if name in contact.keys():
print(contact[name])
else:
print('该联系人不在通讯录中!')
if temp == 2:
name = input('请输入要添加的联系人姓名:')
num = int(input('请输入联系人电话:'))
contact[name] = num
if temp == 3:
name = input('请输入要删除的联系人姓名:')
if name in contact.keys():
contact.pop(name)
else:
print('该联系人不在通讯录中!')
if temp == 4:
break
--------------------------------------------------------------------我是一条分割线----------------------------------------------------------------------