zoukankan      html  css  js  c++  java
  • python基础数据类型(三)字典

    1.字典dict介绍

      字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的(python3.5及3.5以下版本无序),且key必须是可哈希的。

      不可变的数据类型:tupe、bool、int、str    #可哈希

      可变的数据类型:list、dict、set        #不可哈希

      dict key 必须是不可变与可哈希的数据类型;

      dict value 可以是任意数据类型

      dict 优点:利用二分查询法查找数据,存储大量的关系数据。

      dict 缺点:无序的(python3.5及3.5以下版本无序)

    2.dict增

    #
    dic1 = {'age':18,'name':'jason','sex':'male'}
    #one
    dic1['high'] = 185  #没有键值对增加
    print(dic1)
    
    dic1['age'] = 16    #如果键已存在,则将值覆盖
    print(dic1)
    
    #two
    dic1.setdefault('weight')   #默认没有写值,那对应的值是 None
    print(dic1)
    dic2 = dic1
    dic3 = dic1
    dic2.setdefault('weight',190) #如果键已经存在,不做任何改变,如果没有才添加
    print(dic2)
    dic3.setdefault('hobby','girl')
    print(dic3)

    3.dict删

    #删除
    dic1 = {'age':18,'name':'jason','sex':'male'}
    #one
    print(dic1.pop('age'))  #根据键名删除键值对,返回此键对应的值
    print(dic1)
    
    print(dic1.pop('abc',None)) #如果要删除的键名不存在字典中,可以自定义返回值。
    print(dic1.pop('abcd','在字典中找不到此键'))
    print(dic1)
    
    #two
    print(dic1.popitem())  #python3.5及3.5以前版本是随机删除一个键值对,返回被删除的键值对。
    print(dic1)
    
    #three
    del dic1['name']  #指定键名删除键值对,如要删除的键不在字典中,则会报错。
    print(dic1)
    
    del dic1 #不指定键名表示删除整个字典
    print(dic1) #继续打印字典会报错
    
    #four
    dic1.clear()    #清空字典
    print(dic1)
    
    dic1 = {'age':18,'name':'jason','sex':'male'}

    4.dict改

    dic1 = {'age':18,'name':'jason','sex':'male'}
    #
    #one
    dic1['age'] = 16    #通过指定键名直接修改键值对中的值
    print(dic1)
    
    #two
    dic1 = {'age':18,'name':'jason','sex':'male'}
    dic2 = {'name':'alex','weight':75}
    dic2.update(dic1)   #将dic1与dic2中相同的键值对更新到dic2字典中,将dic1中有dic2中没有的键值对更新到dic1字典中
    print(dic1)
    print(dic2)

    5.dict查

    #
    #one
    dic1 = {'age': 18, 'name': 'jason', 'sex': 'male'}
    print(dic1.keys())  #返回字典中所有的键名
    print(dic1.values())    #返回字典中所有的值
    print(dic1.items())     #返回字典中所有的键值对
    
    #two
    dic1 = {'age': 18, 'name': 'jason', 'sex': 'male'}
    for i in dic1:  #for循环中,默认不指定字典的返回条件时,与dict.keys效果一样
        print(i)
    for i in dic1.keys():
        print(i)
    for i in dic1.values(): #在for循环中拆分出所有键值对的值出来
        print(i)
    
    for k,v in dic1.items():  #将字典中的键与值分别循环复制到变量K与v中
        print(k,v)
        
    #three
    dic1 = {'age': 18, 'name': 'jason', 'sex': 'male'}
    print(dic1.get('name','没有这个键')) #通过键名查看键值对中的值,如果字典中存在此键,则返回的是值,如果没有此键名,返回设置好的值

     6.汇总总结

    #增2种方法
        dict['key'] = '不可变的数据类型' #没有此键值对时向字典中增加,有此键值对覆盖之前的值。
        dict.setdefault('key','value')  #如果没有此键值对,才会向字典中增加,反之不做改变。
    
    #删5种方法
        dict.pop('key',None) #按key删除键值对,可自定义返回值
        dict.popitem()  #无序随机删除一个键值对
        del dict #删除整个字典
        del dict['key'] #指定key删除键值对,如没有则报错
        dict.clear()    #清空字典
    
    #改2种方法
        dict['key'] = '不可变的数据类型' #通过指定key直接修改键值对中的值
        dict2.update(dict1) #将dict1中的数据更新到dict2中
        
    #
        print(dict.keys())  #返回字典中所有的键名
        print(dict.values())    #返回字典中所有的值
        print(dict.items())     #返回字典中所有的键值对
        for i in dict       #for循环查看字典内容
        dict.get('key',None)    #通过Key查找键值对,返回自定义的值
  • 相关阅读:
    Office Access 2007 的连接方法变了
    程序员的灯下黑:坚持和良好心态近乎道
    Unity浅析
    WPF设置样式的几种方式
    关于常用 软件授权 Licence说明
    WCF消息队列
    委托利用GetInvocationList处理链式委托
    WCF chatroom源码解析
    写一个Jquery字体插件
    浅谈AsyncState与AsyncDelegate使用的异同
  • 原文地址:https://www.cnblogs.com/jason-lv/p/8074721.html
Copyright © 2011-2022 走看看