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]

  • 相关阅读:
    HDOJ 2095 find your present (2)
    HDOJ 2186 悼念512汶川大地震遇难同胞——一定要记住我爱你
    九度 1337 寻找最长合法括号序列
    九度 1357 疯狂地Jobdu序列
    HDOJ 1280 前m大的数
    九度 1343 城际公路网
    九度 1347 孤岛连通工程
    HDOJ 2151 Worm
    九度 1342 寻找最长合法括号序列II
    九度 1346 会员积分排序
  • 原文地址:https://www.cnblogs.com/shengxinjack/p/7717983.html
Copyright © 2011-2022 走看看