python应用:Python学习笔记(七)字典

    作者:夫无天元更新于: 2020-04-01 20:38:00

    大神带你学编程,欢迎选课

    八、字典

    ​在您开始之前,在你的计算机将需要Python,但您可能不需要下载它。首先检查(在同级目录下在命令行窗口输入python)有没有安装Python。如果你看到了一个Python解释器的响应,那么就能在它的显示窗口中得到一个版本号。通常的版本都可以做到Python的向前兼容。

    字典是Python唯一的映射类型,以键值对(key - value)的方式进行存储

    1、创建字典

    ​ 字典可以使用多种形式进行创建,在访问时也是像列表一样通过中括号进行索引,不过不是通过下标而是通过来进行访问。
    ​ 下面对一部分字典创建方法进行列举

    (1) 通过花括号创建

    ​ 字典可以通过花括号创建,每个键值对的形式为<键 : 值>

    dict1 = {'Harry':'ExpelliArmus', 'Ron':'Bloody hell', 'Naruto':'Rasengan', 'August':'???'}
    print('Ron said:', dict1['Ron'])
    
    输出结果:Ron said: Bloody hell

    (2) 使用关键词参数和类型构造函数

    dict2 = dict(name = 'August', gender = 'male') #每个“值”前面的“键”为关键字参数,不是字符串
    print(dict2)
    
    输出结果:{'name': 'August', 'gender': 'male'}

    (3) 使用类型构造函数和zip()方法

    keys = ['1', '2', '3', '4']
    values = ['one', 'two', 'three', 'four']
    dict3 = dict(zip(keys, values))
    print(dict3)
    
    输出结果:{'1': 'one', '2': 'two', '3': 'three', '4': 'four'}

    (4) 按字段分开填写

    dict4 = {} #创建空字典
    dict4['name'] = 'FWTY'
    dict4['nickName'] = 'August'
    dict4['age'] = '23'
    print(dict4)
    
    输出结果:{'name': 'FWTY', 'nickName': 'August', 'age': '23'}

    (5) fromkeys()
    fromkeys()方法的作用也是建立新的字典
    fromkeys()方法并不是对字典本身进行操作而是创建一个新字典,所以需要将创造出的字典赋值给一个变量

    fromkeys( [,]) #velues不提供的话默认为None
    
    dict5 = dict.fromkeys((1, 2, 3)) #参数values为空
    print(dict5)
    
    输出结果:{1: None, 2: None, 3: None}
    ========================================================
    dict5 = dict.fromkeys((1, 2, 3), 'Numbers')
    print(dict5)
    
    输出结果:{1: 'Numbers', 2: 'Numbers', 3: 'Numbers'}

    ​ 注意,第二个参数会被fromkeys()方法当做一个整体处理

    dict5 = dict.fromkeys((1, 2, 3), ('one', 'two', 'three'))
    print(dict15
    
    输出结果:{1: ('one', 'two', 'three'), 2: ('one', 'two', 'three'), 3: ('one', 'two', 'three')}
    '''由于是当作一个整体处理,所以并不会将元组中的每一个元素作为不同的值分别对应到每一个键,而是将元组整体作为一个值'''

    2、访问字典

    (1) keys()
    keys()方法的作用是返回字典的键

    dict1 = dict.fromkeys(('A', 'B', 'C', 'D'), 'Letters')
    for eachKey in dict1.keys():
        print(eachKey)
        
    输出结果: A
             B
             C
             D

    (2) values()
    values()方法的作用是返回字典的值

    keys = ['1', '2', '3', '4']
    values = ['one', 'two', 'three', 'four']
    dict2 = dict(zip(keys, values))
    for eachValue in dict2.values():
        print(eachValue)
    
    输出结果:one
            two
            three
            four

    (3) items()
    items()方法的作用是返回字典的项(键值对)

    keys = ['1', '2', '3', '4']
    values = ['one', 'two', 'three', 'four']
    dict2 = dict(zip(keys, values))
    for eachItem in dict2.items():
        print(eachItem)
        
    输出结果:('1', 'one')
            ('2', 'two')
            ('3', 'three')
            ('4', 'four')

    (4) get()
    get()方法是一个更为宽松的访问字典项的方法。当我们直接使用键来索引时,如果访问的是一个不存在的键,那么程序将会报错,如:

    dict3 = dict.fromkeys((1, 2, 3), 'Numbers')
    print(dict3[4])
    
    输出结果:KeyError: 4

    ​ 但当我们使用get()方法时,访问不存在的键并不会报错。

    get(<键>[, <当键不存在时的返回值>]) #第二个参数可选,不填时默认返回None
    
    dict3 = dict.fromkeys((1, 2, 3), 'Numbers')
    print(dict3.get(4))
    
    输出结果:None
    ================================================
    print(dict3.get(4, 'Dont Exist'))
    
    输出结果:Dont Exist

    3、常用方法

    (1) clear()
    clear()方法的作用是清空字典

    dict1.clear()
    print(dict1)
    
    输出结果:{}

    (2) copy()
    copy()方法是浅拷贝

    浅拷贝只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存。但深拷贝会另外创造一个一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改动原对象。

    如果拷贝的对象里的元素只有值,没有引用,那浅拷贝和深拷贝没有差别,都会将原有对象复制一份,产生一个新对象,对新对象里的值进行修改不会影响原有对象,新对象和原对象完全分离开。

    如果拷贝的对象里的元素包含引用(像一个列表里储存着另一个列表,存的就是另一个列表的引用),那浅拷贝和深拷贝是不同的,浅拷贝虽然将原有对象复制一份,但是依然保存的是引用,所以对新对象里的引用里的值进行修改,依然会改变原对象里的列表的值,新对象和原对象完全分离开并没有完全分离开。而深拷贝则不同,它会将原对象里的引用也新创建一个,即新建一个列表,然后放的是新列表的引用,这样就可以将新对象和原对象完全分离开。

    而直接赋值,则是相当于对象的引用

    ​ 简单举例:
    ​ a = {1 : '123'}

    • python应用:Python学习笔记(七)字典_python_编程语言_Python语言_课课家

       

    (3) pop() / popitem()
    pop()方法的作用是弹出一个字典项并返回这一项的值

    dict2 = {1:'one', 2:'two', 3:'three', 4:'four'}
    print(dict2.pop(2))
    print(dict2)
    
    输出结果:two #返回键为2的字典项的值
            {1: 'one', 3: 'three', 4: 'four'}

    ​ popitem()方法的作用为弹出最后一个字典项并返回

    dict2 = {1:'one', 2:'two', 3:'three', 4:'four'}
    print(dict2.popitem())
    print(dict2)
    
    输出结果:(4, 'four')
            {1: 'one', 2: 'two', 3: 'three'}

    (4) setdefault()
    setdefault()方法的作用是根据键查找对应值,若查询的键不存在则将其添加进字典中

    setdefault(<键>[, <值>]) #若不规定值则在添加时,加入的键对应值为None
    
    dict2 = {1:'one', 2:'two', 3:'three', 4:'four'}
    print(dict2.setdefault(1))
    print(dict2.setdefault(5))
    print(dict2.setdefault(6, 'six'))
    print(dict2)
    
    输出结果:one #查询的键值对存在
            None #未设置值对应参数
            six #设置了值对应参数
            {1: 'one', 2: 'two', 3: 'three', 4: 'four', 5: None, 6: 'six'}

    (5) update
    update()方法的作用是利用一个字典(或映射关系)去更新字典

    dict2 = {1:'one', 2:'two', 3:'three', 4:'four'}
    dict3 = {4:'肆'}
    dict2.update(dict3)
    print(dict2)
    
    输出结果:{1: 'one', 2: 'two', 3: 'three', 4: '肆'}

    Python是一种解释型脚本语言,可以应用于以下领域: 
    • web 和 InterNET开发
    • 科学计算和统计
    • 人工智能
    • 桌面界面开发
    • 后端开发
    • 网络爬虫
     

课课家教育

未登录

1