zoukankan      html  css  js  c++  java
  • 【Python3】字典

    字典是key - value 数据类型

    创建
    info = {
        'stu01': 'jack',
        'stu02': 'mike',
        'stu03': 'jay'
    }

    字典的特性:

    • dict是无序的
    • key必须是唯一的,天生去重

    >>>info['stu05'] = 'kit' #自动创建
    {'stu01': 'jack','stu02': 'mike','stu03': 'jay','stu05','kit'}

    >>> info.pop("stu03") #标准删除,必须加参数
    {'stu01': 'jack','stu02': 'mike'}
    >>> del info['stu03'] #通用删除
    {'stu01': 'jack','stu02': 'mike'}
    
    >>> info.popitem() #随机删除
    {'stu01': 'jack','stu03': 'jay'}

    >>>info['stu02'] = 'bob'
    {'stu01': 'jack','stu02': 'bob','stu03': 'jay'}

    >>> ‘stu02’ in info #标准用法
    True
    >>> info.get(‘stu02’)  #获取
    'mike'
    >>> info["stu1105"]  #如果一个key不存在,就报错,get不会,不存在只返回None
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    KeyError: 'stu1105'
    多级字典嵌套及操作
    city = {
        '亚洲':{
            '中国':['北京','上海','广州'],
            '俄罗斯': ['莫斯科','圣彼得堡'],
            '日本': ['东京','名古屋','大阪']
        },
        '欧洲':{
            '英国':['伦敦','伯明翰']
        },
        '大洋洲':{
            '澳大利亚':['悉尼','堪培拉']
        }
    }
    
    city[亚洲][中国][2]='深圳' #将广州改成深圳
    
    其他
    #values
    >>> info.values()
    ['jack', 'mike','jay']

    #keys
    >>> info.keys()
    ['stu01','stu02', 'stu03']

    #setdefault #键值存在则罢,不存在的增
    >>> info.setdefault('stu06','jane')
    {'stu01': 'jack','stu02': 'mike','stu03': 'jay','stu06','jane'}
    >>> info.setdefault('stu02','jane')
    {'stu01': 'jack','stu02': 'mike','stu03': 'jay'}

    #update #合并字典,若键值重复,则覆盖
    >>> b = {1:2,3:4,'stu01':'kit'}
    >>> info.update(b)
    {'stu01': 'kit','stu02': 'mike','stu03': 'jay',1:2,3:4}

    #items #字典转列表,里面是元祖
    >>>info.items()
    [('stu01': 'jack'),('stu02': 'mike'),('stu03': 'jay')]

    #通过一个列表生成默认dict
    >>> dict.fromkeys([1,2,3],'testd')
    {1: 'testd', 2: 'testd', 3: 'testd'}
    >>>c=dict.fromkeys([1,2,3],['jack','sandra'])
    >>>c[2][1]='happy' #全改了
    {1:['jack','happy'],3:['jack','happy'],3:['jack','happy']}

    循环
    #方法1
    for key in info:  #高效
        print(key,info[key])
    
    #方法2
    for key,value in info.items(): #先把dict转成list,数据大时莫用
        print(key,value)

    程序练习

    程序: 三级菜单

    要求: 

    1. 打印省、市、县三级菜单
    2. 可返回上一级
    3. 可随时退出程序

    menu = {
        '北京':{
            '海淀':{
                '五道口':{
                    'soho':{},
                    '网易':{},
                    'google':{}
                },
                '中关村':{
                    '爱奇艺':{},
                    '汽车之家':{},
                    'youku':{},
                },
                '上地':{
                    '百度':{},
                },
            },
            '昌平':{
                '沙河':{
                    '老男孩':{},
                    '北航':{},
                },
                '天通苑':{},
                '回龙观':{},
            },
            '朝阳':{},
            '东城':{},
        },
        '上海':{
            '闵行':{
                "人民广场":{
                    '炸鸡店':{}
                }
            },
            '闸北':{
                '火车战':{
                    '携程':{}
                }
            },
            '浦东':{},
        },
        '山东':{},
    }


    exit_flag = False
    current_layer = menu

    layers = [menu]

    while not  exit_flag:
        for k in current_layer:
            print(k)
        choice = input(">>:").strip()
        if choice == "b":
            current_layer = layers[-1]
            #print("change to laster", current_layer)
            layers.pop()
        elif choice not  in current_layer:continue
        else:
            layers.append(current_layer)
            current_layer = current_layer[choice]

  • 相关阅读:
    使用NPOI导出Excel 并设置Excel样式(合并单元格、行高、宽度、字体、边框、位置)...
    DevExpress GridView 单元格进度条
    c# groupBox 带标题边框,标题居中,重写控件
    COCO数据集下载断断续续后unzip无法解压
    SSD_论文+代码(pytorch)
    开始机器学习
    收藏 —— KVM网络虚拟化
    收藏 —— 教你阅读Python开源项目
    收藏 —— 活动目录讲解
    系统计划 Cron作业 为什么/etc/crontab /etc/cron.d /etc/cron.* 那么多的定义方式????
  • 原文地址:https://www.cnblogs.com/shengxinjack/p/7717983.html
Copyright © 2011-2022 走看看