python学习之三 字典

字典(dict){}

字典是一种key-value的数据类型  字典的定义使用{},大括号,每个值用","隔开,key和value使用“:”分隔。字典是无序的。字典有2个优点

1.取数据方便 2.速度快

查   .get()   []

infos = {'name':'小白',
         'age':18,
         'addr':'北京',
         'sex':''}
#查  .get  或者[]
print(infos.get('name'))
print(infos['name'])
print(infos.get('da'))  #如果key不存在的话,会出现None,用.get()方法更好
print(infos.get('da',110))  #如果key不存在的话,默认就是110
print(infos['da'])    #如果key不存在会报错  KeyError: 'da'

增 []   .setdefault()

infos['phone'] = 123456  #增加一个key ,如果key存在的话,会修改原来的key对应的value
infos.setdefault('小金库','2000w')  #如果key存在的话,不会修改原来的key值
print(infos)

改[]

infos['name'] = '小黑'
print(infos)

删  .pop()  .popitem()   del  

infos.pop('name')  #指定key来删除
infos.popitem()  #随机删除
del infos['phone']    #指定key来删除
infos.clear()    #清空字典
print(infos)

字典的循环

#直接循环字典的话,那么循环字典的key
for p in people:
    print(p)
#循环的时候,同时取key和value
for k , v in people.items():
    print(k,'===>',v)      #

 

 

 多层字典

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

print(people['张流量']['cars']['china'][1])  #取值qq
print(people['天宇']['age'])   #取天宇age

people['天宇']['money'] = people['天宇']['money']+200  #给天宇加200

people['天宇']['shoes'].append('匡威')  #给天宇shoes加匡威
print(people)
people['张流量']['car']['usa'].append('牧马人')  #给张流量usa加个牧马人
print(people)

字典小练习  注册用户

users = {'xiaohei':'123456','yangyafu':'456789'}   #存放所有账号密码
#username
#pwd
#cpwd
#print('xiaohei'in users)   #字典里面用in来判断的话,只是判断key是否存在的
for i in range(3):
    username = input('账号:').strip()
    pwd = input('密码:').strip()
    cpwd = input('确认密码:').strip()
    if username =='' or pwd ==''or cpwd =='':
        print('用户名/密码不能为空')
    elif username in users:
        print('用户名已经被注册!')
    elif pwd !=cpwd:
        print('两次输入的密码不一致')
    else:
        print('恭喜注册成功!')
        #users.setdefault(username,pwd)   #字典插入新的数据
        users[username]=pwd     #字典插入新的数据
        break
else:
    print('输入次数过多!')
print(users)

 字典排序

d = {'a':8,'b':2,'c':3}
print(d.items())
#字典是无序的,直接对字典排序是不存在的
res = sorted(d.items(),key=lambda x:x[0])   #0是取元素下标
print(res)   #[('a', 8), ('b', 2), ('c', 3)]

 

posted @ 2018-05-15 14:24  xiaomeng15  阅读(159)  评论(0编辑  收藏  举报