• 字典 (dict) 的增删改查及其他方法


    一、字典

    1、字典简介:

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

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

    PS:数据类型划分:可变数据类型  和  不可变数据类型

            不可变数据类型:元组、bool、int、str    (可哈希)

            可便数据类型:list,dict,set                (不可哈希)

            dict key:必须是不可变数据类型,可哈希

                  value:任意数据类型

            dict优点:二分查找去查询,存储大量的关系型数据

                 特点:无序的

    2、字典用法:

    1)增:

    dic1 = {'age':18,'name':'liu','sex':'male'}
    
    dic1['high'] = 185 #没有键值对,添加
    结果:{'age': 18, 'name': 'liu', 'sex': 'male', 'high': 185}
    dic1['age'] = 16 #如果有键,则值覆盖
    结果:{'age': 16, 'name': 'liu', 'sex': 'male'}
    
    dic1.setdefault('weight')
    结果:{'age': 18, 'name': 'liu', 'sex': 'male', 'weight': None}
    dic1.setdefault('weight',110) #有键值对,不做任改变,没有才添加。
    结果:{'age': 18, 'name': 'liu', 'sex': 'male', 'weight':110}
    dic1.setdefault('name','Liu') #有键值对,不做任改变,没有才添加。
    结果{'age': 18, 'name': 'liu', 'sex': 'male'}

    2)删:

    dic = {'age':18,'name':'liu','sex':'male'}
    
    dic.pop('age') #有返回值,按键去删删除
    结果:{'name': 'liu', 'sex': 'male'}
    dic.pop('瓜子',None) #可设置返回值,没设置返回值会报错,返回值为None
    结果:{'age': 18, 'name': 'liu', 'sex': 'male'}
    
    dic.popitem() #随机删除 有返回值 元组里面是删除键值,Python3.6以后是默认删除最后一个
    结果:{'age': 18, 'name': 'liu'}
    
    del dic['name'] #删除指定键值对,如果没有会报错。
    结果:{'age': 18, 'sex': 'male'}
    del dic #直接删除字典,会报错。
    结果:报错
    
    dic.clear() #清空字典
    结果:{}

    3)改:

    dic = {'age':18,'name':'liu','sex':'male'}
    
    dic['age'] = 16 #覆盖就是更改
    结果:{'age': 16, 'name': 'liu', 'sex': 'male'}
    
    dic = {'age':18,'name':'liu','sex':'male'}
    dic1 = {'name':'志东','weight':65}
    dic.update(dic1) #直接替代更新,用字典更新替代老的字典.update前面的是被更新的字典
    print(dic)  
    结果:{'age': 18, 'name': '志东', 'sex': 'male', 'weight': 65} #更新后的字典
    print(dic1)
    结果:{'name': '志东', 'weight': 65} #原字典

    4)查:

    dic = {'age':18,'name':'liu','sex':'male'}
    
    print(dic.keys()) #字典的键值对 以列表形式输出 但是类型是键值对型
    结果:dict_keys(['age', 'name', 'sex'])  
    print(type(dic.keys()))     
    结果dict_keys
    
    print(dic.values()) #字典的值 以列表形式输出 但是类型是键值对型
    结果:dict_values([18, 'liu', 'male'])
    print(type(dic.values()))
    结果:dict_values
    
    print(dic.items()) #字典的键值对 以元祖形式输出 但是类型是键值对型
    结果:dict_items([('age', 18), ('name', 'liu'), ('sex', 'male')])
    for i in dic: #默认打印出键值,后面跟.value可以打印出数值,后面跟.items可以打印键值对
        print(i)
    结果:age
             name
             sex
    
    print(dic.get('age')) #根据键找对应的数值,不报错 可以自定义值 默认返回 None
    结果:18
    for i , j in dic.items():
        print(i,j)
    结果 
    age 18
    name liu
    sex male
  • 相关阅读:
    与开发沟通
    LVS、Nginx 及 HAProxy 工作原理
    LVS、Nginx 及 HAProxy 工作原理
    HDU Rabbit and Grass 兔子和草 (Nim博弈)
    HDU 2188 悼念512汶川大地震遇难同胞——选拔志愿者(巴什博弈)
    HDU 2149 Public Sale 拍卖(巴什博弈)
    POJ 3260 The Fewest Coins 最少硬币个数(完全背包+多重背包,混合型)
    POJ Charlie's Change 查理之转换(多重背包,变形)
    UVA 147 Dollars 刀了(完全背包,精度问题)
    POJ Dollar Dayz 美元假日(完全背包,常规+大数)
  • 原文地址:https://www.cnblogs.com/hello-boy/p/10122067.html
Copyright © 2020-2023  润新知