美文网首页Python3.5 笔记
Python3.5 笔记——第5章 字典

Python3.5 笔记——第5章 字典

作者: 行者无疆_1024 | 来源:发表于2018-08-17 10:19 被阅读0次

    Python3.5笔记

    第五章 字典

    什么是字典

    字典是Python中唯一内建的映射类型,字典指定值没有特定的顺序,都储存在一个特定的键(key)里,键可以是数字、字符串或者元组,值可以是任何类型。

    字典的创建和使用

    字典由多个键及其对应的值构成的对组成(把键/值对称为项)。字典的每个键/值(key/value)对用冒号(:)分割,每个项用逗号分割,整个字典包括在花括号{}中。空字典由两个花括号{}组成。语法格式如下:

    map = {key1:value1,key2:value2,key3:value3...}
    

    其中,键必须是唯一的,值不需要唯一。值可以是任意数据类型,但键必须是不可变的,如:字符串、数字、元组。

    实例:

    dict1 = {'小智':1001,'小明':1002,'小强':1003}
    print(dict1)
    print(dict1['小智'])
    

    输出:

    {'小智': 1001, '小明': 1002, '小强': 1003}
    1001
    

    通过dict()函数创建字典

    可以用dict()函数,通过其他映射(如其他字典)或键/值序列对,建立字典。如:

    student = [('小智','1001'),('小明','1002'),('小强','1003')]
    detail = dict(student)
    print(detail)
    

    输出:

    {'小强': '1003', '小明': '1002', '小智': '1001'}
    

    dict函数可以通过关键字参数创建字典。例如:

    detail2 = dict(name='小智',number=1002)
    print(detail2)
    

    输出:

    {'number': 1002, 'name': '小智'}
    

    字典的基本操作

    修改、新增元素

    向字典增加新内容是增加新键/值对,修改或删除已有键/值对。如:

    student = {'小智':1001,'小明':1002,'小强':1003}
    student['小强'] = 'hello'
    print(student)
    student['小张'] = 1004
    print(student)
    

    输出:

    {'小明': 1002, '小智': 1001, '小强': 'hello'}
    {'小张': 1004, '小明': 1002, '小智': 1001, '小强': 'hello'}
    

    删除字典中的元素、删除字典

    此处的删除指的是显示删除,显示删除使用del命令,如:

    del student['小智'] #删除字典中的元素
    print(student)
    del student #删除整个字典
    print(student)
    
    {'小强': 'hello', '小张': 1004, '小明': 1002}
    Traceback (most recent call last):
      File "D:/pyspace/hellopython/Chapter5.py", line 29, in <module>
        print(student)
    NameError: name 'student' is not defined
    

    字典的特性

    键不可以重复出现

    键不可以重复出现,键重复出现时,只保留后面的值,如:

    student = {'小智':1001,'小明':1002,'小强':1003,'小智':1005}
    print(student)
    
    {'小强': 1003, '小智': 1005, '小明': 1002}
    

    键必须是不可变的

    键必须是不可变的,所以,可以用数字、字符串、元组,不可以用列表。

    student = {['小智']:1001}
    print(student)
    

    输出:

    Traceback (most recent call last):
    {'小智': 1001, '小明': 1002, '小强': 1003}
      File "D:/pyspace/hellopython/Chapter5.py", line 36, in <module>
    1001
        student = {['小智']:1001}
    --------------通过dict()函数创建字典----------------
    TypeError: unhashable type: 'list'
    
    #student = {['小智']:1001} #键必须是不可变的,不可以是列表
    student = {('小智'):1001} #键必须是不可变的,可以是元组
    print(student)
    

    输出:

    {'小智': 1001}
    

    len()函数

    len()函数用于统计字典中元素的个数。语法格式如下:

    len(dict)
    

    示例:

    student = {'小智':1001,'小明':1002,'小强':1003,'小智':1005}
    print("student字典的长度是%d" % len(student))
    

    输出:

    student字典的长度是3
    

    type()函数

    type()函数用于返回输入的变量类型,如果输入的变量是字典,就返回字典类型。语法格式如下:

    type(var1)
    

    示例:

    student = {'小智':1001,'小明':1002,'小强':1003,'小智':1005}
    print("student字典的类型是%s" % type(student))
    

    输出:

    student字典的类型是<class 'dict'>
    

    字典的格式化

    字典的格式化方式是在,每个转换说明符号%后,加上用圆括号括起来的键。再跟上其他元素。如:

    student = {'小智':1001,'小明':1002,'小强':1003,'小智':1005}
    print("student字典中小明的学号是%(小明)s" % student)
    

    输出:

    student字典中小明的学号是1002
    

    字典和list的区别

    字典 list
    查找和插入的速度极快,操作时间不会随着key的增加而增加 查找和插入的时间,会随着元素的增加而增加
    需要占用大量的内存,内存浪费多 占用空间少,浪费内存小

    字典的方法

    1、clear()方法

    clear()方法用于清空字典中的所有元素,clear()方法没有返回值,而是直接该表字典的值。语法格式如下:

    dict.clear()
    

    示例:

    student = {'小智':1001,'小明':1002,'小强':1003,'小智':1005}
    student.clear()
    print("student字典中元素的个数是:%d" % len(student))
    

    输出:

    student字典中元素的个数是:0
    
    clear()方法和赋空值的区别
    student = {'小智':1001,'小明':1002,'小强':1003,'小智':1005}
    studentCopy = student
    student.clear()#当使用clear()方法时,studentCopy的值也被清空了
    print(student)
    print(studentCopy)
    
    student = {'小智':1001,'小明':1002,'小强':1003,'小智':1005}
    studentCopy = student
    student = {}#当通过空字典重新赋值时,studentCopy的值没有变化,还是指向原先的值
    print(student)
    print(studentCopy)
    

    输出:

    {}
    {}
    {}
    {'小明': 1002, '小强': 1003, '小智': 1005}
    

    2、copy()方法

    copy()方法返回一个具有相同键/值对的新字典。这个方法是浅复制,因为值本身是相同的,而不是副本。语法如下:

    dict.copy()
    

    返回值是一个字典的浅复制。

    示例:

    student = {'小智':1001,'小明':1002,'小强':1003}
    studentCopy = student.copy()
    print("student字典copy的结果是:",studentCopy)
    

    输出:

    student字典copy的结果是: {'小智': 1001, '小强': 1003, '小明': 1002}
    
    什么是浅复制?

    浅复制是指,复制后的副本和原来的对象,只是值相同,但是指向的是不同的对象,而不是同一个对象。所以改变A的值不会影响B,同样改变B的值,也不会影响A。如:

    student = {'小智':1001,'小明':1002,'小强':1003}
    studentCopy = student.copy()
    print("student字典copy的结果是:",studentCopy)
    
    studentCopy['小强']=2018
    print("更新copy后的值:更新后的studentCopy是:",studentCopy)
    print("更新copy后的值:student是:",student)
    
    del studentCopy['小强']
    print("删除copy后的值:更新后的studentCopy是:",studentCopy)
    print("删除copy后的值:student是:",student)
    
    student['小明'] = 3333
    print("更新原始值:更新后的studentCopy是:",studentCopy)
    print("更新原始值:student是:",student)
    
    del student['小强']
    print("删除原始值:更新后的studentCopy是:",studentCopy)
    print("删除原始值:student是:",student)
    

    输出:

    student字典copy的结果是: {'小智': 1001, '小强': 1003, '小明': 1002}
    更新copy后的值:更新后的studentCopy是: {'小智': 1001, '小强': 2018, '小明': 1002}
    更新copy后的值:student是: {'小智': 1001, '小强': 1003, '小明': 1002}
    删除copy后的值:更新后的studentCopy是: {'小智': 1001, '小明': 1002}
    删除copy后的值:student是: {'小智': 1001, '小强': 1003, '小明': 1002}
    更新原始值:更新后的studentCopy是: {'小智': 1001, '小明': 1002}
    更新原始值:student是: {'小智': 1001, '小强': 1003, '小明': 3333}
    删除原始值:更新后的studentCopy是: {'小智': 1001, '小明': 1002}
    删除原始值:student是: {'小智': 1001, '小明': 3333}
    

    3、fromkeys()方法

    fromkeys()方法用于创建一个新字典,以序列seq中的元素做为key,value为字典中所有元素对应的初始值。格式如下:

    dict.fromkeys(seq[,value])
    

    其中,dict代表指定的字典,seq代表字典键值列表,value代表可选参数,为键的值,如果不指定则为None,如果指定则给所有的key统一赋初值。

    示例:

    seq = ('name','age','sex')
    print(dict.fromkeys(seq))
    print(dict.fromkeys(seq,10))
    

    输出:

    {'name': None, 'sex': None, 'age': None}
    {'name': 10, 'sex': 10, 'age': 10}
    

    4、get()方法

    get()方法用于返回指定键的值,如果值不在字典中,则返回默认值。语法如下:

    dict.get(key,default=None)
    

    示例:

    student = {'小智':1001,'小明':1002,'小强':1003}
    print("student中小智的学号是:%s" % student.get('小智'))
    print("student中小智的学号是:%s" % student['小智'])#使用字典下标取值
    print("student中小张的学号是:%s" % student.get('小张','没有这个人'))#get()方法取值不存在时,不会报错
    print("student中小张的学号是:%s" % student['小张'])#使用字典下标取值不存在时,会报错。
    

    输出:

    student中小智的学号是:1001
    student中小智的学号是:1001
    student中小张的学号是:没有这个人
    print("student中小张的学号是:%s" % student['小张'])
    {'小智': '1001', '小明': '1002', '小强': '1003'}
    KeyError: '小张'
    

    5、key in dict方法

    Python字典in操作符用于判断键是否存在于字典中,如果键在dict中就返回true,否则返回false。语法格式如下:

    key in dict
    

    示例:

    student = {'小智':1001,'小明':1002,'小强':1003}
    print("小智在字典中:%s" % ('小智' in student))#注意要用括号括起来,否则输出为false
    

    输出:

    小智在字典中:True
    

    6、items()方法

    items()方法返回可遍历的元素列表。语法格式如下:

    dict.items()
    

    示例:

    student = {'小智':1001,'小明':1002,'小强':1003}
    print(student.items())
    

    输出:

    dict_items([('小明', 1002), ('小强', 1003), ('小智', 1001)])
    

    7、keys()方法

    keys()方法以列表返回一个字典所有键。语法格式如下:

    dict.keys()
    

    示例:

    student = {'小智':1001,'小明':1002,'小强':1003}
    print(student.keys())
    

    输出:

    dict_keys(['小智', '小明', '小强'])
    

    8、setdefault()方法

    setdefault()方法,用于获得与给定键相关联的值。如果值在字典中不存在,就会添加键并将值设为默认值。此方法没有返回值。语法格式如下:

    dict.setdefault(key,default=None)
    

    示例:

    student = {'小智':1001,'小明':1002,'小强':1003}
    print("student中小智的学号是:%s" % student.setdefault('小智'))
    print("student中小智的学号是:%s" % student.setdefault('小智',2001))#key存在的话,返回key的值,不改变key对应的值
    #print("student中小张的学号是:%s" % student.setdefault('小张')) #如果不指定值,则默认值为None
    print("student中小张的学号是:%s" % student.setdefault('小张',1004)) #key不存在,存在指定值,则value=指定值
    print("student中小张的学号是:%s" % student['小张'])
    

    输出:

    student中小智的学号是:1001
    student中小智的学号是:1001
    student中小张的学号是:1004
    student中小张的学号是:1004
    

    9、update()方法

    update()方法用于把字典dict2中键/值更新到指定dict里。语法格式如下:

    dict.update(dict2)
    

    示例:

    student = {'小智':1001,'小明':1002,'小强':1003}
    studentb = {'小张':1004,'小李':1005}
    student.update(studentb)
    studentc = {'小张':2001,'小李':2002}#相同的项会覆盖
    student.update(studentc)
    print(student)
    

    输出

    {'小智': 1001, '小张': 2001, '小强': 1003, '小明': 1002, '小李': 2002}
    

    10、values()方法

    values()方法以列表的形式返回字典中所有的值。与返回键的列表不同的是

    习题

    #用dict函数实现存储一个人的姓名、手机号和地址信息
    person = [('姓名','张三'),('手机号','13388886666'),('地址','火星')]
    print(dict(person))
    #创建一个字典,里面元素的键/值全部由字符串组成,然后更改某个元素,更改其
    #值为非字符串形式
    student = {'小智':'1001','小明':'1002','小强':'1003'}
    # student['小智'] = 2018
    student['小智'] = ['2018','世界杯']
    print(student)
    

    输出:

    {'姓名': '张三', '地址': '火星', '手机号': '13388886666'}
    {'小强': '1003', '小智': ['2018', '世界杯'], '小明': '1002'}
    

    相关文章

      网友评论

        本文标题:Python3.5 笔记——第5章 字典

        本文链接:https://www.haomeiwen.com/subject/gfrzbftx.html