字典—大括号
列表–中括号
元组–逗号,小括号
字典是映射类型,列表和元组是序列类型
>>> brand=['李宁','耐克','阿迪']
>>> slogan=['一切皆有可能','just do it','impossible is nothing']
>>> print('李宁的口号是',slogan[brand.index('李宁')])
创建和访问字典:
>>> dict1={'李宁':'一切皆有可能','耐克':'just do it','阿达':'impossible is nothing'} #李宁 一切皆有可能是项,李宁是键,一切皆有可能是项
>>> print('李宁的口号是:',dict1['李宁'])
访问字典:
dict1[李宁]
创建一个空的字典:
dict1={}
dict常用
字典的内建方法
fromkeys:创建并返回新的字典,有两个参数,一个是键值,一个是可选的值
清空一个字典的方法:clear()
课后题
1.当停到小伙伴讨论“映射”、“哈希”、“散列”、“关系数组”的时候,事实上是在讨论什么?
字典
2.尝试一下将数据(‘F’:70,‘C’:67,‘h’:104,‘i’:105,‘s’:115)创建一个字典并访问键‘C’对应的值?
>>> dict1={'F':70,'C':67,'h':104,'i':105,'s':115}
>>> print('C对应的值是:',dict1['C'])
C对应的值是: 67
3.用[]括起来的叫列表,那么用{}括起来的叫字典对吗?
不对,因为字典也可以用其他方式表示,如果有大括号没有映射关系,这也不叫字典
print('---欢迎进入通讯率系统---')
print('---1:查询联系人资料---')
print('---2:插入新的联系人---')
print('---3:删除已有联系人---')
print('---4:退出通讯录程序---')
dict1={'小甲鱼':'020-0090909','小傻蛋':'080-2334234'}
while 1:
temp = int(input('请输入相关的指令代码:'))
if temp==1:
name1=input('请输入联系人姓名:')
if name1 in dict1:
print(name1+':'+dict1[name1])
else:
print('没有此用户')
if temp==2:
name2=input('请输入联系人姓名:')
tel=input('请输入用户联系电话:')
if name2 in dict1:
print('您输入的名字已在系统中存在-->',end='')
if input('是否修改用户资料(NO/YES):')=='YES':
#如果字典中有值,就会修改对应的值,如果没有值,就会添加该键值对
dict1[name2]=input('请输入用户联系电话')
print('修改成功')
else:
continue
else:
a={name2:tel}
dict1.update(a)
print('插入成功')
if temp==3:
name3=input('请输入联系人姓名:')
if name3 in dict1:
dict1.pop(name3)
else:
print('用户不存在')
if temp==4:
break
5.Python的字典是否支持一个键多个值?
不支持,对相同的键再次赋值会将上一次的值直接覆盖
6.在字典中,如果试图为一个不存在的键赋值会怎样?
会自动创建对应的键并添加进相应的值进去
7.成员资格操作符可以检查一个元素是否存在序列中,当然也可以用来检查一个键是否存在字典中,请问哪种的检查效率更高?
字典的原理是使用哈希算法存储,一步到位,不需要使用查找算法进行匹配,因此时间复杂度是o(1),效率高
8.Python对键和值有没有类型限制?
有,要求他们必须是哈希对象,不能是可变类型
{1 :’数字‘ 3: ’数字’}
10.把 dict1 ={1:‘one’,2:‘two’,3:‘three’}复制到dict2中去怎么操作?
dict1={1:'one',2:'two',3:'three'}
dict2={}
dict2=dict1.copy()
print(dict1)
print(dict2)
user_data={}
def new_user():
promt='请输入用户名:'
while True:
name=input(promt)
if name in user_data:
promt='此用户名已经被用,请重新输入:'
continue
else:
break
passwd=input('请输入密码:')
user_data[name]=passwd
print('注册成功,赶紧登陆试试')
def old_user():
prompt='请输入用户名:'
while True:
name=input(prompt)
if name in user_data:
prompt='您输入的用户名不存在,请重新输入:'
continue
else:
break
passwd=input('请输入密码:')
pwd=user_data.get(name)
if passwd==pwd:
print('欢迎进入本系统')
else:
print('密码错误')
print('---新建用户:N/n---')
print('---登录账号:E/e---')
print('---退出程序Q/q---')
while 1:
word=input('请输入指令代码:')
if word not in 'NnEeQq':
print('您输入的代码有误,请重新输入')
if word=='q' or word=='Q':
break
if word=='n' or word=='N':
new_user()
if word=='e' or word=='E':
old_user()