码迷,mamicode.com
首页 > 编程语言 > 详细

python基础--字典

时间:2017-12-25 00:43:57      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:比较   基础   values   性能   接收   打印   else   删除用户   获取   

字典定义

    d={key1:value1,key2:value2,key3:value3,...}

    字典无序,取值比较方便

字典增删改查

d={name:lucy,age:18,sex:girl,addr:china}
#
d[school]=yanda#方法1:直接赋值
d.setdefault(weight,90kg)#方法二 setdefault(key,value)
#
d[school]=shifan#如果key存在,修改它的值,如果不存在新增一个值
#
d.pop(addr)#接收的key值如果不存在报错
del d[sex]#接收的key值如果不存在报错
del d #删除字典
d.clear()#清空字典内容
d.popitem()#随机删除一个。没有太大卵用
#
print(d[name])#如果写了不存在的key就报错
print(d.get(uname))#get取值不存在,返None
print(d.get(name,找不到))#如果想返回提示语,可以在“,”后边添加
print(d.keys())#获取到所有的keys值
print(d.values())#获取到所有的values

字典遍历

d={uname:lsy,age:18,sex:girl,addr:china}
#只遍历key
for i in d :
    print(i)
#遍历key和value
#方法一:d.items()
for k,v in d.items() :
    print(k,v)
#缺点:items将字典转化成了数组,list取值比字典的慢
#方法二:同时取k-v,保留原来字典的取值速度快的特点,性能好
for k in d:
    print(k,d[k])#等价print(k,d.get(k))

字典嵌套

      数组嵌套字典,字典再嵌套字典

stus=[
      {艾佳: {age: 18, sex: boy, addr: china, 存款: {建行: 80000, 工行: 800000,农行:8000000}}},
      {萱萱: {age: 19, sex: girl, addr: china, bag: {lv: 8, xx: 80}},爱马仕:1},
      ]
#想取出艾佳建行存款
print(stus[0][存款][建行])
#想取出萱萱lv包的个数
# print(stus[-1][‘bag‘][‘lv‘])
#计算艾佳总存款
count=0
for i in stus[0][艾佳][存款].values():
    count=count+i
print(count)
#打印萱萱有哪几种包包
print(stus[1][萱萱][bag].keys())

       字典嵌套字典嵌套数组

stus = {
    ybq: {
        age: 18,
        sex: ,
        addr: 昌平区,
        money: 10000000,
        金库: {
            建行卡: 80000,
            工商卡: 800000,
            招商卡: 8000000
        }
    },
    tlx: {
        age: 19,
        sex: ,
        addr: 昌平区,
        money: 10000000,
        化妆品: [六神,神仙水]
    },
    mpp: {
        age: 19,
        sex: ,
        addr: 昌平区,
        money: 10000000,
        "bag": {
            lv: 一车,
            鳄鱼:10
        }
    },
}
#计算ybq金库的总额
count=0
for i in stus[ybq][金库].values():
    count=count+i
print(count)
#取出‘六神’
print(stus[tlx][化妆品][1])

字典实例--注册、登录

          要求:注册要求有用户名、密码、确认密码,三者均不能为空,判断用户名是否存在;登录 校验非空,校验用户是否存在

all_user={}#定义一个空字典,用来放用户名密码
while True:#死循环,根据需求修改
    uname=input(uname:).strip()#接收用户名,并删除用户名前后的空格
    pwd=input(pwd:).strip()#接收密码,并删除密码前后的空格
    cpwd=input(cpwd:).strip()#接收确认密码,并删除确认密码前后的空格
    if uname and pwd and cpwd:#判断用户名、密码、确认密码是否为空
        if uname in all_user:#判断用户名是否存在
            print(用户名已存在,请重新输入)
        else:
            if pwd==cpwd:#用户名不存在的前提下,判断密码和确认密码是否相等
                all_user[uname]=pwd#将用户名、密码加到all_user字典中
                print(注册成功)
                break#注册成功结束循环
            else:
                print(两次输入密码不一致)
    else:
        print(账号/密码不能为空)
#登录 校验非空,校验用户不存在,
while True:
    username=input(username:).strip()
    password =input(password:).strip()
    if username and password:
        if username in all_user:
            if password==all_user[username]:
                print(登录成功)
                break
            else:
                print(密码错误)
        else:
            print(账号未注册)
    else:
        print(用户名/密码不能为空)

 

python基础--字典

标签:比较   基础   values   性能   接收   打印   else   删除用户   获取   

原文地址:http://www.cnblogs.com/alasijia/p/8099706.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!