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也变,即重新申请一个空间放入新值,则为不可变数据类型
    • 字典是可变数据类型
  • 相关阅读:
    redis+Keepalived主从热备切换实例
    启动tomcat时报错:http-nio-8080-exec-10
    HAProxy 的acl应用
    keepalived vip 没有生成或者生成了ping不通?
    CentOS7 PHP+Redis实现Session共享
    CentOS7 安装phpMyAdmin-4.8.3-all-languages
    CentOS7 yum安装配置 drbd-84-utils (外部模式)
    Python-网络编程之进程
    Python-网络编程之socket
    Python-面向对象之反射
  • 原文地址:https://www.cnblogs.com/itboy-newking/p/10848183.html
Copyright © 2011-2022 走看看