zoukankan      html  css  js  c++  java
  • 第九篇 字典类型的内置方法

    第九篇 字典类型的内置方法

    #dict(字典)

    1 用途

    • 可以用key描述值,相较于索引取值更直观高效
    • 多用于存的值是不同的状态,比如存的值有姓名、年龄、性别等等

    2 如何去定义一个字典类型

    • 大括号 {} 包裹键值,并用逗号隔开每个键值对,键值对的形式为 key : value
    • key必须为不可变数据类型,key一般用字符串类型;value 可以是任意数据类型
    dic = {'a':6,'b':3} #等同于 dic = dict({'a':6,'b':3})
    print(dic)
    '''结果是:
    {'a':6,'b':3}
    '''
    
    • 也可以用内置函数 dict()
    dic = dict(a=6,b=3) '''不能写成dic = dict(6=a,3=b) 会有语法错误“这个关键字不能成为一种表达”'''
    print(dic)
    '''结果是:
    {'a': 6, 'b': 3}
    '''
    
    • 不推荐用数字来充当key,虽然数字用作key本身没问题
    dic = {1:'jojo',2:'bob',0:'jim'}
    print(f'dic[0] = {dic[0]}')  '''很容易让人误以为是列表,而且key不再具有描述信息的能力'''
    '''结果是:
    dic[0] = jim
    '''
    
    • 不能用unhashable类型(也即是可变数据类型)充当key
    dic = {[0]:'jim','age':5}
    '''程序会报错'''
    

    3 常用操作和内置方法

    • 按key 存取值
    dic = {'name':'king','age':26}
    print(dic['name'])
    #结果是 king 
    
    • 长度len()
    dic = {'name':'king','age':26,'gender':'male'}
    print(len(dic))
    #结果是:3 
    #数的应该是 key 的个数
    
    • 成员运算 in 和 not in
    dic = {'name':'king','age':26,'gender':'male'}
    #判断字典中是否有我们给出的成员
    print(f'{"king" in dic}')
    print(f'{"name" in dic}')
    print(f'{"age" in dic}')
    print(f'{"king" not in dic}')
    print(f'{not "king" in dic}')
    #结果是:Flase
    #       True
    #       True
    #       True
    #       True
    
    • 键 keys()、值 values()、键值对 items()

    注意:使用这三种方法时,python2中打印的是列表,python3中打印的是元组

    ## 我们用python3来演示 ##
    # 取键 keys()
    dic = {'rank':12,'score':66}
    print(dic.keys())
    #结果是:dict_keys(['rank', 'score'])
    
    # 取值 values()
    dic = {'rank':12,'score':66}
    print(dic.values())
    #结果是:dict_values([12, 66])
    
    # 取简直对 items()
    dic = {'rank':12,'score':66}
    print(dic.items())
    #结果是:dict_items([('rank', 12), ('score', 66)])
    
    • 用循环和上述的三种方法可以取出想要的值
    # dic是无序的,但是python3采用了底层优化算法,所以看起来是有序的,但是python2中的字典是无序,并且输出的是元组类型
    dic = {'name':'king','age':26,'gender':'male'}
    for K,V in dic.items():         #可以把items()换成keys()或values()试试
        print(K,V)
    #可以打印字典中的每一个元素值
    #python3中打印的结果是
    '''
    name king
    age 26
    gender male
    '''
    
    ##python2中打印结果:
    '''
    ('gender', 'male')
    ('age', 26)
    ('name', 'king')
    '''
    
    
    • 删除 del
    dic = {'name':'king','age':26,'gender':'male'}
    del dic['name']  
    print(dic)
    '''输出结果:{'age': 26, 'gender': 'male'}'''
    
    
    • 删除(可以指定key之后删除元素,返回值是value) pop()
    dic = {'name':'king','age':26,'gender':'male'}
    print(dic.pop('name'))
    print(dic)
    '''结果是:
    king
    {'age': 26, 'gender': 'male'}
    '''
    
    
    • 随机删除一个元素(返回值的类型是元组) popitem()不需要参数
    dic = {'name':'king','age':26,'gender':'male'}
    print(dic.popitem())
    print(dic)
    '''结果是:
    ('gender', 'male')
    {'name': 'king', 'age': 26}
    '''
    
    
    • get() 通过key获取value,并返回value,但不对字典做任何操作,当输入的key不在字典中时,返回值是None
    dic = {'name':'king','age':26,'gender':'male'}
    print(dic.get('name'))
    print(dic)
    '''结果是:
    king
    {'name': 'king', 'age': 26, 'gender': 'male'}
    '''
    
    
    • update() 更新字典,参数必须是字典类型
    dic = {'name':'king','age':26}
    dic.update(dict(a=2))
    print(dic)
    '''结果是:
    {'name': 'king', 'age': 26, 'a': 2}
    '''
    
    
    • fromkeys() 用于创建一个新字典,以列表 key_list 中的元素作为新字典的键,value为新字典所有键对应的初始值
    key_list = ['name','age','gender']
    dic = dict.fromkeys(key_list,None)
    print(dic)
    '''结果是:
    {'name': None, 'age': None, 'gender': None}
    '''
    
    
    • setdefault() 和get()有点类似,可以通过键key查看value,不同的时,当查看的元素不存在时,它会在字典中将查看的内容设置为新的字典元素,且设置完之后不能再通过同样的方法改变value了。(value值默认是None)
    dic = {'name':'king','age':26}
    print(dic.setdefault('name'))
    print(dic.setdefault('gender'))
    print(dic)
    print(dic.setdefault('gender','male'))
    print(dic)
    '''结果是:
    king
    None
    {'name': 'king', 'age': 26, 'gender': None}
    None
    {'name': 'king', 'age': 26, 'gender': None}
    '''
    
    

    4 存一个值or多个值

    • 多个值

    5 有序or无序

    • 无序
    • 字典是无序的,但是python3采用了底层优化算法,所以看起来是有序的,但是python2中的字典是无序,可以在python2中通过for循环取值查看

    6 可变or不可变

    • id不变值可变,即在原值的基础上修改,则为可变数据类型;值变id也变,即重新申请一个空间放入新值,则为不可变数据类型
    • 字典是可变数据类型
  • 相关阅读:
    48. Rotate Image
    47. Permutations II
    46. Permutations
    45. Jump Game II
    44. Wildcard Matching
    43. Multiply Strings
    42. Trapping Rain Water
    41. First Missing Positive
    40. Combination Sum II
    39. Combination Sum
  • 原文地址:https://www.cnblogs.com/itboy-newking/p/10848183.html
Copyright © 2011-2022 走看看