zoukankan      html  css  js  c++  java
  • 字典 (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
  • 相关阅读:
    BF算法和KMP算法
    Python课程笔记 (五)
    0268. Missing Number (E)
    0009. Palindrome Number (E)
    0008. String to Integer (atoi) (M)
    0213. House Robber II (M)
    0198. House Robber (E)
    0187. Repeated DNA Sequences (M)
    0007. Reverse Integer (E)
    0006. ZigZag Conversion (M)
  • 原文地址:https://www.cnblogs.com/hello-boy/p/10122067.html
Copyright © 2011-2022 走看看