小甲鱼《零基础学习Python》课后笔记(二十五):字典——当索引不好用时1

测试题
0.当你听到小伙伴在讨论“映射”、“哈希”、“散列”或者“关系数列”的时候,事实上他们就是在讨论什么呢?
事实上是在讨论字典,字典是python中的映射类型,而列表,元组是序列类型。

1.尝试一下将数据(‘F’:70, ‘C’:67, ‘h’:104, ‘i’:105, ‘s’:115)创建为一个字典并访问键‘C’对应的值?

>>> dict1 = {'F':70, 'C':67, 'h':104, 'i':105, 's':115}  
>>> dict1['C']  
67  
2.用方括号(“[]”)括起来的数据我们叫列表,那么用大括号(“{}”)括起来的数据我们就叫字典,对吗?

不是,如下:

>>> dict2 = {'A', 'l', 'l', 'e', 'n'}  
>>> dict2  
{'e', 'l', 'A', 'n'}  
>>> type(dict2)  
<class 'set'>  

这个set类型把相同的元素合并了,并且对元素进行排序了,已经是一个集合了,以后再介绍。

3.你如何理解有些东西字典做得到,但“万能的”列表却难以实现(臣妾做不到o(╥﹏╥)o)?

列表的索引只能是数字,而字典的键可以是数字,字符等等。

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)])  
>>> 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.如图,你可以推测出打了马赛克部分的代码吗?

5题图
打了马赛克部分的是:data.split(’,’)

data = "1000,小甲鱼,男"  
MyDict = {}  
  
(MyDict['id'], MyDict['name'], MyDict['sex']) = data.split(',')  
	  
print("ID:   " + MyDict['id'])  
print("Name: " + MyDict['name'])  
print("Sex:  " + MyDict['sex']) 

动动手

0.尝试利用字典的特性编写一个通讯录程序吧,功能如图:
0题图
程序如下:

print('|---欢迎进入通讯录程序---|')
print('|---1:查询联系人资料---|')
print('|---2:插入新的联系人---|')
print('|---3:删除已有联系人---|')
print('|---4:退出通讯录程序---|')	
dict1 = {}
while True:
	print()
	count = int(input('请输入相关的指令代码:'))
	if count == 1:
		name = input('请输入联系人姓名:')
		if name in dict1:
			print(name + ':' + dict1[name])
			continue
		else:
			print('未查找到此联系人')
			continue
	elif count == 2:
		name = input('请输入联系人姓名:')
		if name in dict1:
			print('您输入的姓名在通讯录中已存在 -->>' + name + ':' + dict1[name])
			x = input('是否修改用户资料(YES/NO):')
			if x == 'YES':
				phone = input('请输入用户联系电话:')
				dict1[name] = phone
			else:
				continue
		else:
			phone = input('请输入用户联系电话:')
			dict1[name] = phone
			print('插入新的联系人' + name + '成功!')
			continue
	elif count == 3:
		name = input('请输入联系人姓名:')
		if name in dict1:
			x = input('是否删除已有联系人(YES/NO):')
			if x == 'YES':
				del(dict1[name])
				print('删除联系人' + name +'成功')
				continue
			else:
				print('未删除联系人' +name)
				continue
		else:
			print('未查找到此联系人')
	else:
		print('欢迎您的下次使用!')
		break

测试结果如下:

|---欢迎进入通讯录程序---|
|---1:查询联系人资料---|
|---2:插入新的联系人---|
|---3:删除已有联系人---|
|---4:退出通讯录程序---|

请输入相关的指令代码:2
请输入联系人姓名:sdz
请输入用户联系电话:2323
插入新的联系人sdz成功!

请输入相关的指令代码:2
请输入联系人姓名:dragon
请输入用户联系电话:3333
插入新的联系人dragon成功!

请输入相关的指令代码:2
请输入联系人姓名:allen
请输入用户联系电话:3344
插入新的联系人allen成功!

请输入相关的指令代码:1
请输入联系人姓名:sdz
sdz:2323

请输入相关的指令代码:2
请输入联系人姓名:sdz
您输入的姓名在通讯录中已存在 -->>sdz:2323
是否修改用户资料(YES/NO):YES
请输入用户联系电话:3444

请输入相关的指令代码:2
请输入联系人姓名:sdz
您输入的姓名在通讯录中已存在 -->>sdz:3444
是否修改用户资料(YES/NO):NO

请输入相关的指令代码:3
请输入联系人姓名:sdz
是否删除已有联系人(YES/NO):YES
删除联系人sdz成功

请输入相关的指令代码:3
请输入联系人姓名:dragon
是否删除已有联系人(YES/NO):NO
未删除联系人dragon

请输入相关的指令代码:4
欢迎您的下次使用!
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值