zoukankan      html  css  js  c++  java
  • python数据类型——字典类型

    字典(dictionary)

    python中唯一的映射类型,采用键值对(key-value)的形式储存数据,python对key进行哈希函数运算,所以key值必须是可哈希的,可哈希表示key必须是不可变的,如:数字、字符串、元组,元组的值value可以为所有类型的数据。系统根据哈西的计算结果储存value的地址,所以字典是无序的。
    相对于列表,字典是通过键来存取,二列表是通过偏移(下标)来存取。
    方便理解:元组相当于一个大旅馆,旅馆中有很多很多的房间,存数据相当于房间中住人或者放各种东西,key相当于门牌号,这个门牌号是在旅馆不能动且一定唯一,因为门牌号一改,整个旅馆的房间就乱了。房间中的东西相当于value,每个房间中可以随意的放任何种类的东西,住人啊,放行李啊,电器什么的,就相当于value可以是任何种类的数据。这样旅馆中门牌号可以是无序的,因为每个房间和门牌号是一一对应的,所以只要找对门牌号就可以找到指定房间。

    字典的创建

    dic1={'name':'cai','game':"lol",'age':8}
    print(dic1)
    格式:d = {key1 : value1, key2 : value2 }每一个key对应一个value。

    增删改查

    增加

    dic2={'name':"li",'hobby':"money"}
    dic2['age']=8#添加'age':8
    print(dic2)
    
    dic2.setdefault('age',24)#键存在,不改动,返回键对应的原值;键不存在,在字典中添加键和值,并返回新添加的值。

    两种方式,一种用d[key]=value直接添加新的值,一种用setdefault方法。若不想影响字典中原有数据,单纯的添加setdafult方法相对安全;d[key]=value若字典中原来已有该key,将会把value覆盖更新。

    查找

    a=dic2['age']#把'age'对应的值赋给a
    print(a)
    print(dic2.keys())#输出所有的键(key)
    print(dic2.values())#输出所有的值(value)
    print(dic2.items())#以元组方式输出所有键-值(key-value)

    查找很简单,d[key]可直接获得键对应的值,并可用自带方法输出相应数据。

    修改

    dic2['age']=22
    print(dic2)

    d[key]=value,有则改之,无则添加。

    另有update方法:

    dic2.update(dic1)
    print(dic2)

    该方法会将dic1中的所有键值添加到dic2,若dic2中有和dic1中的键相同,则dic2中对应的值将会被覆盖。

    删除

    del dic2['age']
    print(dic2)

    类似列表,可以用del d[key]删除对应键值。同样也有pop和clear方法:

    dic2.pop('age')#删除键age的键和值,返回删除的值
    dic1.clear()#清空整个字典
    del dic2#删除整个字典

     

    字典的嵌套

    既然字典中的value可以是任何类型的数据,那value也可以是字典类型,字典中的字典就是嵌套。举个例子:

    dic4={
        '文件夹':{
            'games':{
                'FC':['坦克大战','魂斗罗','超级玛丽'],
                'MD':['新光明与黑暗','梦幻之星4千年终结','雪人兄弟'],
                'GBA':['口袋妖怪漆黑的魅影','铸剑物语','火焰纹章','超级机器人大战'],
    
            }
        }
    }

    我这个dic4按照我电脑的一个文件夹创建。那么字典以内的字典如何查看修改呢。

    x=dic4['文件夹']['games']['FC'][1]
    print(x)
    dic4['文件夹']['games']['FC'][1]='雪人兄弟'
    print(dic4)

    字典的嵌套类似文件夹,有层级关系。用[]进入一层字典,在下一层再用[]进入再下一层,类推。可以进入任何一层进行访问修改删除等操作。

    还有排序函数:

    print(sorted(dic4['文件夹']['games']))

    可以用sorted函数对子典的一层内容进行排序,可以是key,value,或者key-value.

    字典的遍历

    可以通过for循环进行对整个字典内数据的获取:

    dic5={'name':"li",'hobby':"money"}
    for i in dic5:
        print(i,dic5[i])
    for i,v in dic5.items():
        print(i,v)
  • 相关阅读:
    03 java中的基本数据类型和运算符
    02 Eclipse安装
    01 HelloWorld
    express不是内部或外部命令
    win10 内存或系统资源不足,无法打开PPT
    win 10中解决“此文件在另外一个进程中运行”的问题
    后台查找密码暴力破解
    DVWA--全等级暴力破解(Burte Force)
    DVWA简单搭建
    破解版
  • 原文地址:https://www.cnblogs.com/caijingyue/p/8521183.html
Copyright © 2011-2022 走看看