• python基础--字典


    字典定义

        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('用户名/密码不能为空')
  • 相关阅读:
    【树转数组】poj1195
    sigsuspend sigprocmask函数的用法
    [javascirpt] Regex
    [Angular 2] Passing data to components with 'properties'
    [TypeScript] Inheritance
    [Angular 2] Pipes with Multiple Parameters
    [Angular 2] Create a simple search Pipe
    [Angular 2] Pipe Purity
    [Angular 2] Exposing component properties to the template
    [Angular 2] ng-model and ng-for with Select and Option elements
  • 原文地址:https://www.cnblogs.com/alasijia/p/8099706.html
Copyright © 2020-2023  润新知