Python-字典,,一、概念字典用大括号
Python-字典,,一、概念字典用大括号
一、概念
字典用大括号{}表示,键值对格式。优点是取数据方便,速度快。
从string到list到dict,取数据越来越简单。
字典是无序的。
下面是一个字典。这个字典包含了4个键值对。4个key分别为:name、sex、addr、age。每个key都有对应得value。
二、字典操作
1、查
有2种方法可以对字典进行查询。
第一种是get,语法格式为:dict.get(‘key‘),查对应key的值。
此方法的优点是,可以定义假如key不存在,取到的默认值。如果不定义,返回None,不会报错。
第二种语法格式为:dict[‘key‘],也是查询对应key的值,但是如果key不存在会报错。
另外,还可以查询字典所有的key,value,k-v。
2、增
增也有2种方法。
第一种,直接dict[‘new_key‘]=value。采用这种方法不止可以新增k-v对,还可以修改已有的key对应的value。
第二种,语法格式为:dict.setdefault(‘new_key‘,‘value‘)。这种方法如果key存在,不能修改对应的值,也不会报错。
3、改
在上一部分已经介绍了如何修改,dict[‘new_key‘]=value即可。要把name的值改为小红,直接infos[‘name‘]=‘小红‘就可以了。
4、删
(1)dict.pop(‘key‘),删除指定的key。如果key不存在会报错。
(2)dict.popitem(),随机删除一个key,无法指定key
(3)del dict[‘key‘],删除指定key。如果key不存在会报错。
三、取字典中的值
字典取值也是一层层的取。
例:
package = { ‘pack_1‘:{ ‘name‘:‘小兰‘, ‘phone‘:18888888888, ‘addr‘:‘北京‘, ‘sex‘:‘女‘, ‘money‘:200, ‘contain‘:[‘books‘,‘clothes‘,‘cup‘,‘hat‘] }, ‘pack_2‘:{ ‘weight‘:‘1.5kg‘, ‘contact‘:[‘phone‘,‘email‘], ‘cities‘: { ‘china‘:[‘北京‘,‘上海‘,‘深圳‘], ‘usa‘:[‘纽约‘,‘洛杉矶‘,‘华盛顿‘], ‘Australia‘:[‘悉尼‘,‘墨尔本‘] } }}# 取pack_2的洛杉矶print(package[‘pack_2‘][‘cities‘][‘usa‘][1])#取出pack_2所有的中国城市print(package[‘pack_2‘][‘cities‘][‘china‘])#在pack_1中增加‘contain‘元素,增加‘shoes‘package[‘pack_1‘][‘contain‘].append(‘shoes‘)print(package[‘pack_1‘][‘contain‘])#money增加100package[‘pack_1‘][‘money‘] = package[‘pack_1‘][‘money‘] + 100print(package[‘pack_1‘][‘money‘])
分析:
(1)取‘洛杉矶’时,首先要取到usa这一层 package[‘pack_2‘][‘cities‘][‘usa‘],usa这一层是列表,所以接下来应该按照 list 取元素的方式取。
(2)增加contain中的元素,首先要取到contain这一层,也就是package[‘pack_1‘][‘contain‘],contain是 list,因此用list增加元素的方法增加‘shoes‘
运行结果为:
四、字典循环
字典循环,循环的是key。将上面的字典循环。
如果想k-v都循环,可以用下面的方式:
五、下面做一个字典的小练习
请设计一个注册的小程序,实现以下功能:(1)输入用户名,密码,再次确认密码(2)校验用户名是否已经注册,已经注册的不允许再次注册;(3)校验两次输入密码是否一致,不一致给出提示;(4)最多输入错误3次;(5)注册成功后,将新的用户添加进去。
users = { ‘mary‘:‘123456‘, ‘lily‘:‘456789‘}for i in range(3): username = input(‘账号:‘).strip() passwd = input(‘密码:‘).strip() cpasswd = input(‘密码确认:‘).strip() if username==‘‘ or passwd==‘‘ or cpasswd==‘‘: print(‘用户名/密码不能为空‘) elif username in users: print(‘用户名已经被注册‘) elif passwd!=cpasswd: print(‘两次输入的密码不一致‘) else: print(‘恭喜,注册成功!‘) users[username]=passwd breakelse: print(‘错误次数过多‘)print(users)
Python-字典
评论关闭