• 基础数据类型(三)


    3、字典Dict

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

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

    3.1、增加

    dic= {'name': 'jin', 'age': 18, 'sex': 'male'}
    
    #1、通过键名key进行添加
    dic['weight'] = '65'    
    print(dic)              #{'name': 'jin', 'age': 18, 'sex': 'male', 'weight': '65'}
    
    #2、字典中有同名key则不执行操作,没有才会添加
    dic.setdefault('age',21)
    print(dic)              #{'name': 'jin', 'age': 18, 'sex': 'male', 'weight': '65'}
    
    dic.setdefault('hobby','rabbit')
    print(dic)              #{'name': 'jin', 'age': 18, 'sex': 'male', 'name2': '依米', 'hobby': 'rabbit'}
    
    #注意:如果不给值则默认值设为None
    dic.setdefault('hobby')
    print(dic)              #{'name': 'jin', 'age': 18, 'sex': 'male', 'weight': '65', 'hobby': None}
    

    3.2、删除

    #1、pop(key) 按key删除,有返回值
    dic = {'name': 'jin', 'age': 18, 'sex': 'male','high': 175}
    #注意:如果删除一个不存在的键则会报错
    dic.pop('high1')      #KeyError: 'high1'
    retval = dic.pop('high')
    print(retval)           #175
    print(dic)              #{'name': 'jin', 'age': 18, 'sex': 'male'}
    
    #2、del dic[key] 删除键值对
    dic = {'name': 'jin', 'age': 18, 'sex': 'male','high': 175}
    del dic['age']
    print(dic)              #{'name': 'jin', 'sex': 'male', 'high': 175}
    #从内存中删除整个字典
    del dic
    print(dic)              #报错:name 'dic' is not defined
    
    #3、clear() 清空字典
    dic = {'name': 'jin', 'age': 18, 'sex': 'male','high': 175}
    dic.clear()
    print(dic)              #{}
    
    #4、popitem() 随机删除字典中的某个键值对,将删除的键值对以元祖的形式返回
    dic = {'name': 'jin', 'age': 18, 'sex': 'male','high': 175}
    retval = dic.popitem()
    print(retval)           #('high', 175)
    print(dic)              #{'name': 'jin', 'age': 18, 'sex': 'male'}

    3.3、修改

    dic = {'name': 'jin', 'age': 18, 'sex': 'male'}
    #1、 dic['key'] = value 有key就覆盖
    dic['age'] = 21
    print(dic)          #{'name': 'jin', 'age': 21, 'sex': 'male'}
    
    #2、dic2.update(dic) 将dic的键值对会覆盖添加到dic2中,dic保持不变
    dic = {'name': 'jin', 'age': 18, 'sex': 'male'}
    dic2 = {'name': 'alex', 'weight': 75}    
    dic2.update(dic)
    print(dic)          #{'name': 'jin', 'age': 18, 'sex': 'male'}
    print(dic2)         #{'name': 'jin', 'weight': 75, 'age': 18, 'sex': 'male'}
    

    3.4、查询  

    dic = {'name': 'jin', 'age': 18, 'sex': 'male'}
    
    #1、通过键名key查询
    print(dic['name'])          #jin
    #注意:如果没有找到要查询的key则会报错
    # print(dic['name2'])       #KeyError: 'name2'
    
    #2、通过get(key) 查询
    print(dic.get('name'))          #jin
    #不会报错,会输出一个None
    print(dic.get('name2'))         #None
    #没有找到,会输出用户提示的信息
    print(dic.get('name2','没有此键值对'))    #没有此键值对
    
    #3、通过for循环进行遍历查询
    #(1) 遍历所有的键名(key)
    for k in dic:
        print(k, end=' ')       #name age sex
    
    print("
    ")
    for k in dic.keys():
        print(k, end=' ')       #name age sex
    
    #(2) 遍历所有的键值(value)
    print("
    ")
    for v in dic.values():
        print(v, end=' ')       #jin 18 male
    
    #(3) 遍历所有的键值对(key,value)
    print("
    ")
    for k,v in dic.items():
        print(k,v, end=' ')         #name jin age 18 sex male
    
    print("
    ")
    for k in dic:
        print(k,dic[k], end=' ')    #name jin age 18 sex male

    3.5、字典的嵌套

    dic = {
        'name':'hello',
        'name_list':[1,2,3],
        1:{
            'years':['2017','2019'],
           'py':{'name':'python3','age':5}
        }
    }
    
    #1、[1,2,3]追加'wusir'
    dic['name_list'].append('wusir')
    print(dic['name_list'])     
    #输出结果:[1, 2, 3, 'wusir']
    
    #2、['2017','2019'] 在2017、2019中间插入一个2018
    dic[1]['years'].insert(1,'2018')
    print(dic[1]['years'])      
    #输出结果:['2017', '2018', '2019']
    
    #3、{'name':'python3','age':5} 添加一个键值对,hobby:code
    dic[1]['py']['hobby'] = 'code'
    print(dic[1]['py'])         
    #输出结果:{'name': 'python3', 'age': 5, 'hobby': 'code'}
    

     数据类型总结:

    # 可变与不可变:
        # 不可变数据类型: int、str、bool、元组tuple
        # 可变数据类型: 列表list、字典dict、集合set
  • 相关阅读:
    MAC之基本命令(持续更新)
    Mac下android_sdk配置环境变量
    Eclipse最常用10大快捷键
    Android之使用Jsoup抓取网络数据
    MAC之curl命令
    MAC之cat命令
    Android之FileOutputStream与openFileOutput()的区别
    C# 数字语音wav 提示。。。。。。。。。。。
    HttpWebRequest 获取验证码的图片 并针对有验证码的网页进行Winform登陆。
    经常开车,坐车的朋友请进(看后对你绝对有好处)
  • 原文地址:https://www.cnblogs.com/lioushell/p/8351457.html
Copyright © 2020-2023  润新知