zoukankan      html  css  js  c++  java
  • Python:字典操作总结

     字典是Python中唯一的映射类型

    [注]:字典中数据是无序排放的

    一、字典的创建方法

    方法1:用大括号包裹键值对从而创建字典

    1 addict={}#创建一个空字典
    2 addict={key1:value1,key2:value2,...}

    方法2:利用内建函数dict()来创建字典

    (1)利用dict()创建空字典

    d=dict() #创建空字典

    (2)利用dict()以传入关键字的方式创建字典

    1 user=dict(name='Tomwenxing',age='23',job='student',salary='20000000')
    2 print(user)

    (3)利用dict()以映射函数的方式创建字典

    1 location=dict(zip(['nation','province','city'],['China','ZheJiang','HangZhou']))
    2 print(location)

    (4)利用dict以可迭代对象的方式创建字典

    1 message=dict([('name','Tomwenxing'),('sex','male'),('job','student')])
    2 print(message)

    方法三:利用dict.fromkeys()来创建字典

    语法:dict.fromkeys(seq[,value])

    [说明]:

    (1)fromkeys()方法用于创建一个新的字典,以序列seq中元素做字典的键值,value为字典所有键对应的初始值

    (2)seq——字典键值列表或元组

        value——可选参数,设置键序列seq的值,默认为None

    1 seq=('name','age','job','salary')
    2 d=dict.fromkeys(seq)
    3 print(d)

    1 seq=('name','age','job','salary')
    2 d=dict.fromkeys(seq,20000)
    3 print(d)

     

    二、字典的基本操作

    Question1:如何访问字典dict中的值
    Answer:dict[key]形式返回key对应的value,如果key不存在则会在字典中引发一个KeyError


    Question2:如何检查key是否在字典dict中
    Answer:

    a、用dict.has_key(key)方法,若key在字典dic中返回True,否则返回False(Python 3.X 里不包含 has_key() 函数,被 __contains__(key) 替代
    b、用in或not in 来判断


    Question3:如何更新字典dict
    question3-1:如何在字典dict中添加一个新的键值对
    answer:以dict[new_key]=new_value的形式向字典中添加新的键值对
    question3-2:如何在字典dict中更新一个键值对
    answer:以dict[old_key]=new_value的形式更新字典中的键值对
    question3-3:如何在字典dict中删除一个键值对
    answer:

    a、del dict[key]删除字典中键为key的项/del dict删除整个字典
    b、dict.pop(key)删除字典中键为key的项并返回key对应的value值

    三、字典的相关操作

    A、内建函数对字典的操作

    1.len():返回字典的长度

    2.hash():返回对象的哈希值,可以用来判断一个对象是否用来作为字典的键

    3.dict():工厂函数,用来创建字典

    B、字典的方法

    1.dict.copy():返回一个字典的浅拷贝副本

    2.dict.clear():删除字典中的所有项或元素

    3.dict.fromkeys(seq,val=None):创建并返回一个新字典,以seq中的元素做该字典的键,value做该字典中所有键对应的初始值(默认为None)

    4.dict.get(key,default=None):返回字典中key对应的值,若key不存在于字典中,则返回default的值(默认为None)

    1 user={'name':'Tomewenxing','age':'23','job':'student','sex':'male'}
    2 print(user.get('name')) #返回键name对应的value值
    3 print(user.get('girlfriend')) #默认返回None
    4 print(user.get('salary',20000000))#返回参数default的值

     5.dict.items():返回一个包含所有(键,值)元组的列表

    1 user={'name':'Tomewenxing','age':'23','job':'student','sex':'male'}
    2 print(user.items())

    6.dict.keys():返回一个包含字典所有key的列表

    1 user={'name':'Tomewenxing','age':'23','job':'student','sex':'male'}
    2 print(user.keys())

    7.dict.pop(key[,default]):和get方法相似。如果字典中存在key,就删除并返回key对应的value;如果key不存在,并且没有给出default的值,则引发keyerror异常

    1 user={'name':'Tomewenxing','age':'23','job':'student','sex':'male'}
    2 print(user.pop('sex'))
    3 print(user)
    4 print(user.pop('sex','male'))
    5 print(user.pop('sex')) #错误,引发keyerror异常

    8.dict.popitem():随机返回并删除字典中的一对键和值;如果字典已经为空了,却调用此方法,就报keyerror异常

    [注]:以(key,value)的形式返回键值对

    9.dict.setdefault(key,default=None):和get方法相似。如果键key不存在于字典中,则会添加键并将键对应的value值设为参数default的值;如果key已经存在了,则没有任何影响

    [注]:key——查找的键值

             default——键不存在时,设置的默认键值

    1 user={'name':'Tomewenxing','age':'23','job':'student','sex':'male'}
    2 user.setdefault('name','Tom')
    3 user.setdefault('salary',200000)
    4 print(user)

    10.dict.update(dict2):将字典dict2的键值对更新到字典dict中

    1 user={'name':'Tomewenxing','age':'23','job':'student','sex':'male'}
    2 user_add={'salary':2000000,'girlfriend':None}
    3 user.update(user_add)
    4 print(user)

    11.dict.values():返回一个包含字典所有value的列表

    12.dict.has_key(key):用于判断键是否存在于字典中,如果键在字典dict里返回true,否则返回false

    [特别注意]: Python 3.X 里不包含 has_key() 函数,被 __contains__(key) 替代

    user={'name':'Tomwenxing','age':'23','job':'student','sex':'male'}
    print(user.__contains__('name'))
    print(user.__contains__('salary'))

    四、字典使用的注意事项

    1、在字典中不允许一键对应多个值

    2、字典的键值必须是可哈希的。

  • 相关阅读:
    三行代码实现邮件发送
    两种HTTP请求方法:GET和POST的区别
    测试自动化平台 | 测试开发工程师的进阶之路
    测试自动化平台 | 测试开发工程师的进阶之路
    Autotestplat.com 更新了!
    如何规范小开发公司的测试流程。?
    如何规范小开发公司的测试流程。?
    《自动化平台测试开发》出版啦!!!
    后缀数组
    bzoj 3864: Hero meet devil
  • 原文地址:https://www.cnblogs.com/duwenxing/p/7353822.html
Copyright © 2011-2022 走看看