0.当你听到小伙伴们在谈论“映射”、“哈希”、“散列”或者“关系数组”的时候,事实上他们就是在讨论什么呢?
事实上讨论的是字典.
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
或者
>>>dict2 = dict((('F',70), ('C',67), ('h',104), ('i',105), ('s',115)))
>>>dict2['C']
67
2.用方括号("[]")括起来的数据我们叫列表,那么使用大括号("{}")括起来的数据我们就叫字典,对吗?
不对。
>>>NotADict = {1, 2, 3, 4, 5}
>>>type(NotADict)
虽然我们用大括号("{}")把一些数据括起来了,但由于没有反应出这些数据有映射的关系,所以创建出来的不是字典,而是Set(后边会讲)。
3.你如何理解有些东西字典做得到,但"万能的"列表却难以实现?
举个例子:
>>>brand = ['李宁', '耐克', '阿迪达斯', '鱼C工作室']
>>>slogan = ['一切皆有可能', 'Justdo it', 'Impossible is nothing', '让编程改变世界']
>>>print('鱼C工作室的口号是:', slogan[brand.index('鱼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)])
>>> e = dict({'three': 3, 'one':1, 'two': 2})
没有区别
>>> a = dict(one=1, two=2, three=3)
>>> a
{'two': 2, 'one': 1, 'three': 3}
>>> b = {'one': 1, 'two': 2, 'three': 3}
>>> b
{'two': 2, 'one': 1, 'three': 3}
>>> c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))
>>> c
{'two': 2, 'one': 1, 'three': 3}
>>> d = dict([('two', 2), ('one', 1), ('three', 3)])
>>> d
{'two': 2, 'one': 1, 'three': 3}
>>> e = dict({'three': 3, 'one': 1, 'two': 2})
>>> e
{'two': 2, 'one': 1, 'three': 3}
5.如图,你可以推测出打了马赛克部分的代码吗?
data = "1000,小甲鱼,男"
MyDict = {}
# 还记得字符串的分割方法吧,别学过就忘啦^_^
(MyDict['id'], MyDict['name'], MyDict['sex']) = data.split(',')
print("ID: " + MyDict['id'])
print("Name: " + MyDict['name'])
print("Sex " + MyDict['sex'])
动动手:
0.尝试利用字典的特性编写一个通讯录程序吧,功能如图:
print('''|--- 欢迎进入通讯录程序 ---|
|--- 1:查询联系人资料 ---|
|--- 2:插入新的联系人 ---|
|--- 3:删除已有联系人 ---|
|--- 4:退出通讯录程序 ---|''')
print('\n')
address_book = dict()
nums = int(input('请输入相关的指令代码:'))
while nums !=4:
name = input('请输入联系人姓名:')
if nums == 1:
if name in address_book:
print(name +':'+ address_book[name])
else:
print('您输入的姓名不再通讯录中!')
print('\n')
elif nums == 2:
if name in address_book:
print('您输入的姓名在通讯录中已存在-->>',name + ':'+address_book[name])
temp = input('是否修改用户资料(YES/NO):')
if temp == 'YES':
address_book[name] = input('请输入用户联系电话:')
else:
temp_num = input('请输入用户联系电话:')
address_book[name] = temp_num
print('\n')
elif nums == 3:
address_book.pop(name)
print('\n')
else:
print('输入有误!')
nums = int(input('请输入相关的指令代码:'))
print('|--- 感谢使用通讯录程序 ---|')