所谓双鱼

导航

 

1、字典都是key-value 形式

有以下两个特点:取数据方便,速度快

字典是无序的

2、查询

1)查询一

info = {'name':'刘佳','sex':'','addr':'地球','age':18}
print(info.get('name'))  

取对应key的value值,结果为:刘佳

如果key值不存在,不会报错,会返回none,如下图

info = {'name':'刘佳','sex':'','addr':'地球','age':18}
print(info.get('phone'))  

phone这个key是没有的,所以返回的value是none

2)查询二

获取对应key的value值时,在key后面可跟一个value,如果key存在,则输出的还是字典中key对应的value

info = {'name':'刘佳','sex':'','addr':'地球','age':18}
print(info.get('name',110))

因为name这个key在字典中存在,所以输出的value是刘佳

如果key不存在,如下

info = {'name':'刘佳','sex':'','addr':'地球','age':18}
print(info.get('phone',110))

输出的结果为:110

3)查询三

info = {'name':'刘佳','sex':'','addr':'地球','age':18}
print(info['name'])

该种查询方式,key存在的话,与第一二种方式相同,输出为:刘佳

如果key不存在,则会报错

3、新增

1)新增一

info = {'name':'刘佳','sex':'','addr':'地球','age':18}
info['phone']=1244564    #增加一个key-value
print(info)

为该字典增加一个key-value,输出结果为:

{'name': '刘佳', 'sex': '', 'addr': '地球', 'age': 18, 'phone': 1244564}

2)新增二

info = {'name':'刘佳','sex':'','addr':'地球','age':18}
info.setdefault('money','200w') #增加一个key-value
print(info)

为该字典增加一个key-value,输出结果为:

{'name': '刘佳', 'sex': '', 'addr': '地球', 'age': 18, 'money': '200w'}

4、修改

1)修改一

如果key存在,不会改变value的值,即不能修改成功,该方法其实就是新增有效

info = {'name':'刘佳','sex':'','addr':'地球','age':18}
info.setdefault('name','emily') #如果key存在,不会修改原来key的值
print(info)

输出结果为:

{'name': '刘佳', 'sex': '', 'addr': '地球', 'age': 18}

2)修改二

如果key存在,会修改value的值 

info = {'name':'刘佳','sex':'','addr':'地球','age':18}
info['name']='emily' #如果key存在的话,会修改原来key的值
print(info)

 输出结果为:

{'name': 'emily', 'sex': '', 'addr': '地球', 'age': 18}

5、删除

1)指定key删除

info = {'name':'刘佳','sex':'','addr':'地球','age':18}
info.pop('name') #指定key来删除
print(info)

info = {'name':'刘佳','sex':'','addr':'地球','age':18}
del info['name'] #指定key来删除
print(info)

 输出结果都为:

{'sex': '', 'addr': '地球', 'age': 18}

2)随机删除一个key

info = {'name':'刘佳','sex':'','addr':'地球','age':18}
info.popitem() #随机删除一个key
print(info)

输出结果也可能是任意key-value值

3)清空字典

info = {'name':'刘佳','sex':'','addr':'地球','age':18}
info.clear() #清空字典
print(info)

 输出结果就是整个字典清空 {}

6、字典方法:获取key或value

info = {'name':'刘佳','sex':'','addr':'地球','age':18}
print(info.values()) #获取字典所有value
print(info.keys()) #获取字典所有key
print(info.items()) #获取字典所有key-value

输出结果:

dict_values(['刘佳', '', 18, '地球'])
dict_keys(['name', 'sex', 'age', 'addr'])
dict_items([('name', '刘佳'), ('sex', ''), ('age', 18), ('addr', '地球')])

7、嵌套字典&嵌套数组

people = {
    '田雨':{
        'age':18,
        'money':200000,
        'clothes':'100套',
        'hzp':'n多',
        'shoes':['nike','addis','lv','chanle']
    },
    '张流量':{
        '金库':'2000w',
        'house':['三环一套','4环2套'],
        'cars':    {
                'japan':['普拉多','兰德酷路泽'],
                'usa':['林肯','凯迪拉克','福特'],
                'china':['五菱宏光','qq','红旗']
            }
    }
}

查找张流量所有的USA的车,可以这样查

print(people['张流量']['cars']['usa'])

查找张流量的qq车,应该这样查

print(people['张流量']['cars']['china'][1])  

给田雨增加200块钱:

people['田雨']['money'] += 200
print(people['田雨']['money'])

给田雨增加一双匡威鞋:

people['田雨']['shoes'].append('匡威')
print(people['田雨']['shoes'])

8、循环

直接循环字典,就是循环字典的key

字典依然是上文提到的people的字典,循环字典

for p in people:
   print(p)

输出结果为:田雨 张流量

循环时同时取key和value的值

for k,v in people.items():  #循环的时候,同时取key 和 value
  print(k ,v)

输出结果就是字典people的整个数据

 9、小练习

user = {'emily':'122123',
        'emilyq':'23124'}
print('emily' in user)  #字典里面用in来判断的话,知识判断key是否存在,存在返回true,不存在返回false
for i in range(3):
    username = input('请输入账号:').strip()
    passwd = input('请输入密码:').strip()
    cpasswd = input('请确认密码:').strip()
    if username=='' or passwd=='' or cpasswd=='':
        print('用户名/密码不能为空')
    elif username in user:
        print('用户名已经被注册过了')
    elif passwd!=cpasswd:
        print('两次密码输入的不一样')
    else:
        print('恭喜,注册成功')
    #user.setdefault(username,passwd)  
    user[username]=passwd
else:
    print('输入错误次数过多')

 

 

 

 

 

posted on 2018-03-28 19:58  所谓双鱼  阅读(186)  评论(0编辑  收藏  举报