• 08 Python学习之字典-dict


    字典是用大括号扩起来的,以逗号分隔的,一组键值对,键和值以冒号分隔 dic = {'key': 'value'}

    字典增加元素

    字典键值对的增加有两种方式:

    方式一

    是通过赋值的方式给字典添加

    语法:
    dict_name[key] = value

    例1:

    dt = {'name': 'Tony Stark', 'age': 30}
    dt['gender'] = '男'
    print(dt)
    

    运行结果:

    {'name': 'Tony Stark', 'age': 30, 'gender': '男'}
    

    方式二

    是利用 setdefault 方法添加,该方法有两个参数,第一个参数是键,第二个参数是默认值
    注意:
    如果 setdefault 里面的key已经存在了,则会返回该key对应的value,如果可以不存在,则加入并且value的值默认是None

    语法:

    setdefault(self, key, default=None, /)	
    		Insert key with a value of default if key is not in the dictionary.
    		Return the value for key if key is in the dictionary, else default.
    

    例1:

    dt = {'name': 'Tony Stark', 'age': 30}
    dt['gender'] = '男'
    # 方式二:
    dt.setdefault('hobby', '骑行')
    print(dt)
    

    运行结果:

    {'name': 'Tony Stark', 'age': 30, 'hobby': '骑行'}
    

    字典删除元素

    pop删除元素
    pop删除需要给定key,如果key存在则删除,不存在而且没有给定默认值,就会报错

    例1:

    dt = {'name': 'Tony Stark', 'age': 30}
    ret = dt.pop('age')
    print('删除后的字典是:', dt)
    print('被删除键的值是:', ret)
    

    运行结果是:

    删除后的字典是: {'name': 'Tony Stark'}
    被删除键的值是: 30
    

    例2:

    dt = {'name': 'Tony Stark', 'age': 30}
    ret = dt.pop('hobby', '无此键名')			# 有默认值,当键名不存在,返回默认值
    print('删除后的字典是:', dt)
    print('被删除键的值是:', ret)
    

    运行结果:

    删除后的字典是: {'name': 'Tony Stark', 'age': 30}
    被删除键的值是: 无此键名
    

    例3:

    dt = {'name': 'Tony Stark', 'age': 30}
    ret = dt.pop('hobby')						# 没有默认值会报错
    print('删除后的字典是:', dt)
    print('被删除键的值是:', ret)
    

    运行结果:

    Traceback (most recent call last):
      File "/projects/oldboy/laptop/day05/dict字典.py", line 5, in <module>
        ret = dt.pop('hobby')
    KeyError: 'hobby'
    

    字典更改元素值

    改变字典的值,由于字典的键是唯一的不能重复的,因此改变字典的键的值可以直接赋值
    例1:

    dt = {'name': 'Tony Stark', 'age': 30}
    dt['age'] = 31
    print(dt)
    

    运行结果:

    dt = {'name': 'Tony Stark', 'age': 31}
    

    字典查询元素的值

    方式一
    直接取值的方式获取键的值,如果键不存在,会报错,推荐使用方式二的get方法
    例1:

    dt = {'name': 'Tony Stark', 'age': 30}
    ret = dt['name']
    print('指定键的值是:', ret)
    

    运行结果:

    指定键的值是: Tony Stark
    

    方式二
    通过get方法获取, 如果键不存在返回None
    语法:

     get(self, key, default=None, /)
    		Return the value for key if key is in the dictionary, else default.
    

    例1:

    dt = {'name': 'Tony Stark', 'age': 30}
    ret = dt.get('age')
    print('指定键的值是:', ret)
    

    运行结果:

    指定键的值是: 30
    

    其他方法

    popitem

    popitem删除一个键值对,并返回被删除的键值对(以元组的方式返回),默认是删除最后一个
    例1:

    dt = {'name': 'Tony Stark', 'age': 30}
    ret = dt.popitem()
    print('删除后的字典是:', dt)
    print('被删除键的值是:', ret)
    

    运行结果:

    删除后的字典是: {'name': 'Tony Stark'}
    被删除键的值是: ('age', 30)
    

    keys

    keys获取字典的所有的键,返回类型是dict_keys
    例1:

    dt = {'name': 'Tony Stark', 'age': 30}
    ret = dt.keys()
    print('指定键的值是:', ret)
    print('类型是:', type(ret))
    

    运行结果:

    指定键的值是: dict_keys(['name', 'age'])
    类型是: <class 'dict_keys'>
    

    values

    values是获取字典的所有的值,返回类型是dict_values
    例1:

    dt = {'name': 'Tony Stark', 'age': 30}
    ret = dt.values()
    print('指定键的值是:', ret)
    print('类型是:', type(ret))
    

    运行结果:

    指定键的值是: dict_values(['Tony Stark', 30])
    类型是: <class 'dict_values'>
    

    items

    items是以元组的方式返回键值对,返回类型是dict_items
    例1:

    dt = {'name': 'Tony Stark', 'age': 30}
    ret = dt.items()
    print('指定键的值是:', ret)
    print('类型是:', type(ret))
    

    运行结果:

    指定键的值是: dict_items([('name', 'Tony Stark'), ('age', 30)])
    类型是: <class 'dict_items'>
    

    copy

    copy 用于复制一个字典,同样这个跟一样存在一个深浅复制问题
    例1:

    import copy
    
    dt = {'name': 'Tony Stark', 'age': 30, 'hobby': ['骑行', '游泳']}
    ret = copy.deepcopy(dt)					# 这里如果不用深拷贝,那么在修改了dt后,ret的值也会修改
    dt['hobby'][1] = '爬山'
    print('dt的ID是:', id(dt))
    print('ret的ID是:', id(ret))
    print('dt的内容是:', dt)
    print('ret的内容是:', ret)
    

    运行结果:

    dt的ID是: 140674238588752
    ret的ID是: 140674109081352
    dt的内容是: {'name': 'Tony Stark', 'age': 30, 'hobby': ['骑行', '爬山']}
    ret的内容是: {'name': 'Tony Stark', 'age': 30, 'hobby': ['骑行', '游泳']}
    

    例2:

    dt = {'name': 'Tony Stark', 'age': 30, 'hobby': ['骑行', '游泳']}
    ret = dt.copy()							# 浅拷贝
    dt['hobby'][1] = '打乒乓球'
    print('dt的ID是:', id(dt))
    print('ret的ID是:', id(ret))
    print('dt的内容是:', dt)
    print('ret的内容是:', ret)
    

    运行结果:

    dt的ID是: 140709526153040
    ret的ID是: 140709526153112
    dt的内容是: {'name': 'Tony Stark', 'age': 30, 'hobby': ['骑行', '打乒乓球']}
    ret的内容是: {'name': 'Tony Stark', 'age': 30, 'hobby': ['骑行', '打乒乓球']}
    

    clear

    清空字典,返回值是None
    例1:

    dt = {'name': 'Tony Stark', 'age': 30, 'hobby': ['骑行', '游泳']}
    ret = dt.clear()
    print('dt的内容是:', dt)
    print('ret的内容是:', ret)
    

    运行结果:

    dt的内容是: {}
    ret的内容是: None
    

    update

    update是将一个字典和另一个字典合并,如果有相同的键,值会被更新,如果没有新键会加入到字典中
    例1:

    dt = {'name': 'Tony Stark', 'age': 30, 'hobby': ['骑行', '游泳']}
    dt2 = {'name': 'Tom', 'Phone_no': 123456}				# 相同的键 name ,dt中name的值会被更新
    ret = dt.update(dt2)
    print('dt的内容是:', dt)
    print('ret的内容是:', ret)
    

    运行结果:

    dt的内容是: {'name': 'Tom', 'age': 30, 'hobby': ['骑行', '游泳'], 'Phone_no': 123456}
    ret的内容是: None
    
  • 相关阅读:
    django继承User表导致的问题
    Sublime Text 3 鼠标右键快捷选项 简单且高效
    php所有版本
    windows 安装redis
    php玩弄redis基本操作
    PHP 实现文件下载
    PHP 获取客户端的真实IP
    根据标签内个数,显示隐藏《加载更多》
    ubuntu 安装nginx+php+mysql+phpadmin环境
    面试总结
  • 原文地址:https://www.cnblogs.com/zcf-blog/p/13188334.html
Copyright © 2020-2023  润新知