0.你听说小伙伴们再讨论“映射”、“哈希”、“散列”或者“关系数组”的时候,事实上他们在讨论什么呢?
答:字典
1.尝试一下将数据(‘F’:70,“C”:67,“H”:104,“I”:105,“S”:115)创建为一个字典并访问键“C”对应的值是?
a = {'F':70,'C':67,'h':104,'i':105,'s':115}
a
{'F': 70, 'C': 67, 'h': 104, 'i': 105, 's': 115}
d['C']
67
d = dict(zip(['F','C','h','i','s'],[70,67,104,105,115]))
d
{'F': 70, 'C': 67, 'h': 104, 'i': 105, 's': 115}
d['C']
67
d = dict(F=70 ,C=67 ,h=104, i=105,s=115)
d
{'F': 70, 'C': 67, 'h': 104, 'i': 105, 's': 115}
d['C']
67
d = dict.fromkeys("FChis",10)
d.update(F=70,C=67,h=104,i=105,s=115)
d
{'F': 70, 'C': 67, 'h': 104, 'i': 105, 's': 115}
d['C']
67
2.用方括号(“[]”)括起来的数据我们叫列表,那么使用大括号(“{}”)括起来的数据我们就叫字典,对吗?
答:不对。使用大括号(“{}”)括起来的可能是集合set。
3.你如何理解有些东西字典做得到,但“万能的”列表却难以实现呢?
答: 我们通过列表达到元素之间的一一对应关系,是通过两者索引值联系起来。而字典内置自带映射关系的键值对,相较于列表而言效率高。
4.下面这些代码,他们都在执行一样的操作吗?你能看出差别吗?
答:运行的结果都是字典,但是运行的方法不同。殊途同归。
5.推测打码部分:
data = "1000,小甲鱼,男"
MyDict = {}
(MyDict["id"],MyDict["name"],MyDict["sex"]) = (data.split(","))
print("Id: " + MyDict["id"])
print("Name: " + MyDict["name"])
print("sex: " + MyDict["sex"])
Id: 1000
Name: 小甲鱼
sex: 男
6.动动手:
0.尝试利用字典特性,写一个通讯录
print("""|--- 欢迎进入通讯录程序 ---|
|--- 1:查询联系人资料 ---|
|--- 2:插入新的联系人 ---|
|--- 3:删除已有联系人 ---|
|--- 4:退出通讯录程序 ---|""")
address = {}
while 1:
command = int(input("\n请输入相关的指令代码:"))
if command == 1:
name = input("请输入联系人姓名:")
if name in address:
print(name + ' : ' + address[name])
else:
print("此人不是通讯录中的好友!")
if command == 2:
name = input("请输入联系人姓名:")
if name in address:
print("您输入的姓名在通讯录中已存在 -->> ", name + ":" + address[name])
if input("是否修改用户资料(YES/NO):") == "YES":
address[name] = input("请输入用户联系电话:")
else:
address[name] = input("请输入用户联系电话:")
if command == 3:
name = input("请输入联系人姓名:")
if name in address:
if input("是否删除用户资料(YES/NO):") == "YES":
del (address[name])
else:
break
else:
print("此人不是通讯录中的好友!")
if command == 4:
break
print('|--- 感谢使用通讯录程序 ---|')