zoukankan      html  css  js  c++  java
  • Python基础五 字典(dic)

    一:字典(dic)

    字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。

      字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

    1.增

    dic = {"name":"jin","age":18,"sex":"male"}
    
    # dic['key'] = 'value'   key存在则改变,key不存在则添加
    
    dic['name'] = 'qwe'
    print(dic)
    dic['hobby'] = '旅游'
    print(dic)
    # 输出结果:{'name': 'qwe', 'age': 18, 'sex': 'male', 'key': 'value'}
    # 输出结果:{'name': 'jin', 'age': 18, 'sex': 'male', 'hobby': '旅游'}
    
    
    # setdefault  key存在不变,不存在则添加
    
    dic.setdefault('age','15')
    print(dic)
    dic.setdefault('hobby','旅游')
    print(dic)
    # 输出结果:
    # {'name': 'jin', 'age': 18, 'sex': 'male'}
    # {'name': 'jin', 'age': 18, 'sex': 'male', 'hobby': '旅游'}
    View Code

    2.删

    dic = {"name":"jin","age":18,"sex":"male"}
    
    # pop 按key删除,有返回值     如果没有key,可设置返回值(不设置返回值报错)
    
    dic.pop('name')
    print(dic)
    # 输出结果:
    # {'age': 18, 'sex': 'male'}
    
    ret = dic.pop('hobby','没有此键')
    print(ret)
    print(dic)
    # 输出结果:
    # 没有此键
    # {'name': 'jin', 'age': 18, 'sex': 'male'}
    
    # clear   清空字典
    
    dic.clear()
    print(dic)
    # 输出结果:{}
    
    del    删除字典,删除键值对
    del dic    删除字典
    
    del dic['name']
    print(dic)
    # 输出结果:
    # {'age': 18, 'sex': 'male'}
    
    popitem    随机删除
    
    ret = dic.popitem()
    print(ret)
    print(dic)
    # 输出结果:
    # ('sex', 'male')
    # {'name': 'jin', 'age': 18}
    View Code

    3.改

    dic = {"name":"jin","age":18,"sex":"male"}
    dic2 = {"name":"alex","weight":75}
    
    # dic['key'] = 'value'   有 key 就覆盖,没有就添加
    
    # update    把dic2中的 键值对  覆盖添加  到dic中,dic 不变
    dic.update(dic2)
    print(dic)
    # 输出结果:
    # {'name': 'alex', 'age': 18, 'sex': 'male', 'weight': 75}
    View Code

    4.查

    dic = {"name":"jin","age":18,"sex":"male"}
    
    print(dic['name'])      #通过 key 直接查 value    没有 key 报错
    print(dic['age'])
    print(dic['name'],type(dic['name']))
    print(dic['age'],type(dic['age']))
    # 输出结果:
    # jin <class 'str'>
    # 18 <class 'int'>
    
    # get     通过 key 直接查 value    没有 key 时,可设置返回值
    print(dic.get('name'))
    print(dic.get('name1'))
    print(dic.get('name1','没有此键对'))
    # 输出结果:
    # jin
    # None
    # 没有此键对
    View Code

    5.字典的其他方法

    dic = {"name":"jin","age":18,"sex":"male"}
    
    
    keys = dic.keys()
    print(keys,type(keys))
    # 输出结果:
    # dict_keys(['name', 'age', 'sex'])   <class 'dict_keys'>
    
    values = dic.values()
    print(values)
    # 输出结果:
    # dict_values(['jin', 18, 'male'])
    
    items = dic.items()
    print(items)
    # 输出结果:
    # dict_items([('name', 'jin'), ('age', 18), ('sex', 'male')])
    
    
    for k in dic:
        print(k,type(k))
    '''
    输出结果:
    name <class 'str'>
    age <class 'str'>
    sex <class 'str'>
    '''
    
    for k in dic.keys():
        print(k,type(k))
    '''
    输出结果:
    name <class 'str'>
    age <class 'str'>
    sex <class 'str'>
    '''
    
    for v in dic.values():
        print(v)
    '''
    # 输出结果:
    jin
    18
    male
    '''
    
    for k,v in dic.items():
        print(k,v)
    '''
    # 输出结果:
    name jin
    age 18
    sex male
    '''
    
    for k in dic:
        print(k,dic[k])
    '''
    # 输出结果:
    name jin
    age 18
    sex male
    '''
    View Code

    6,字典的嵌套

    dic = {
        'name': "金鑫",
        'name_list':[1, 2, 3, '李杰'],
        1: {
            'python10':['小黑', '萌哥'],
            '老男孩': {'name':'oldboy', 'age':56}
        }
    }
    #1,[1,2,3,'李杰']追加'wusir'
    
    dic['name_list'].append('wusir')
    print(dic)
    
    #2, ['小黑','萌哥'] 小黑 萌哥中间 插入一个花哥
    
    dic[1]['python10'].insert(1,'花哥')
    print(dic)
    
    #3, {'name':'oldboy','age':56} 添加一个键值对,hobby:男人
    
    dic[1]['老男孩']['hobby'] = '男人'
    print(dic)
    
    dic[1]['老男孩'].setdefault('hobby','男人')
    print(dic)
    View Code
  • 相关阅读:
    回调函数
    zoj 2104
    zoj 1760
    ppt 图的基本算法 dfs
    zoj 2110 Tempter of the Bone
    优先队列 priority_queue 55 nyist
    STL的队列和栈简单使用
    poj 2246 递归 zoj 1094
    nyist 8 set的应用
    bailian 2694
  • 原文地址:https://www.cnblogs.com/zhuzhaoyang/p/8352343.html
Copyright © 2011-2022 走看看