• Python之第六章 内置容器 --- 字典(映射)


    目录

    Python之第六章 内置容器 --- 字典(映射)

    1.定义:

    2.格式:

    3.字典创建示例

    ​4.增加字典元素

    5.删除字典

    6.字典的访问

    7.字典的复制

    8.使用get()方法获取指定的键值

    9.字典的遍历

    10.字典内涵列表

    11.字典内含字典


    Python之第六章 内置容器 --- 字典(映射)

    1.定义:

            字典属于可变序列,使用‘ 键:值 ’(key - value)的方式配对存储数据。Python的字典由”键”和“值“构成,其中”键“表示查找的数据,”值“表示查找的结构,类似于新华字典的“ 拼音 - 汉字”

    2.格式:

            dictname = { ' key1 ' : ' value1 ',' key2 ' : ' value2 ', ... , ' key n ' : ' value n ', }

    dictname --- 字典名

    key --- 元素的键

    value --- 元素的值,可为任意数据,不需要唯一

    3.字典创建示例

    1. dict1 = {'andy': 1001, 'fox': 1002, 'alice': 1003}
    2. dict2 = {}  # 空字典
    3. dict3 = dict()  # 使用dict()方法,强制转换 创建空字典
    4. name = ['lose', '凝光', '风霜', '学业']
    5. sign = ['001', '002', '110', '561']
    6. # 使用zip()函数 将列表或元组对应的元素组合成字典
    7. dict4 = dict(zip(name, sign))
    8. dict5 = dict(a=92.5, b=77.4, c=64.9)  # 键 = 值的方式创建
    9. print(dict1, '\n', dict2, '\n', dict3, '\n', dict4, '\n', dict5)
    10. 结果:
    11. {'andy': 1001, 'fox': 1002, 'alice': 1003}
    12. {}
    13. {}
    14. {'lose': '001', '凝光': '002', '风霜': '110', '学业': '561'}
    15. {'a': 92.5, 'b': 77.4, 'c': 64.9}
    16. Process finished with exit code 0

    ​4.增加字典元素

            格式 --- dictname[键] = 值

            

    1. dict1 = {'西瓜': 1, '香蕉': 8, "苹果": 10}
    2. print(dict1)
    3. dict1['橘子'] = 6
    4. print(dict1)
    5. dict1["苹果"] = 12
    6. print(dict1)
    7. 结果:
    8. {'西瓜': 1, '香蕉': 8, '苹果': 10}
    9. {'西瓜': 1, '香蕉': 8, '苹果': 10, '橘子': 6}
    10. {'西瓜': 1, '香蕉': 8, '苹果': 12, '橘子': 6}
    11. Process finished with exit code 0

    5.删除字典

            del 字典名[键] --- 删除字典中特定元素

    dictname.clear( ) --- 清空字典全部元素

    del 字典名 --- 删除字典整体

            例

    1. dict1 = {'西瓜': 1, '香蕉': 8, "苹果": 10}
    2. del dict1['西瓜']
    3. print(dict1)
    4. dict1.clear()
    5. print(dict1)
    6. del dict1
    7. print(dict1)
    8. 结果:
    9. {'香蕉': 8, '苹果': 10}
    10. {}
    11. Traceback (most recent call last):
    12.  File "E:\pythontext\test3.py", line 1886, in
    13.    print(dict1)
    14. NameError: name 'dict1' is not defined
    15. Process finished with exit code 1

    6.字典的访问

            dictname [ ]

            

    1. dict1 = {'西瓜': 1, '香蕉': 8, "苹果": 10}
    2. print(dict1['香蕉'], dict1['苹果'])
    3. 结果:
    4. 8 10

    7.字典的复制

            作用 --- 保护原字典内容

            格式 --- new_dictname = dictname.copy( )

            

    1. dict1 = {'西瓜': 1, '香蕉': 8, "苹果": 10}
    2. dict2 = dict1.copy()
    3. print(dict1, '\n', dict2)
    4. print(id(dict1), id(dict2)) # 字典拷贝 默认使用深拷贝
    5. 结果:
    6. {'西瓜': 1, '香蕉': 8, '苹果': 10}
    7. {'西瓜': 1, '香蕉': 8, '苹果': 10}
    8. 1597252597504 1597252597696
    9. Process finished with exit code 0

    注意:

            默认为深拷贝,新字典地址独立

    8.使用get()方法获取指定的键值

            格式 --- dictname.get( key, default )

    key --- 指定的键

    defaul --- 可省略,用于指定键不存在时,返回默认值,若省略则返回None

    1. dict1 = {'Name': 'andy', 'Age': 17, 'Class': 19}
    2. print(dict1.get('Age'))
    3. print(dict1.get("Score"))
    4. print(dict1.get('Score', '无此选项'))
    5. # 若访问的键不存在则执行default
    6. 结果:
    7. 17
    8. None
    9. 无此选项

    9.字典的遍历

            格式1 --- 遍历值,items()方法

    for i in dictname.items():

            处理 i

            格式2 --- 键:值遍历

    for key,value indictname.items():

            处理 key 和 value

    1. name = ['lose', '凝光', '风霜', '学业']
    2. sign = ['001', '002', '110', '561']
    3. dict1 = dict(zip(name, sign))
    4. for i in dict1.items():
    5.    print(i)
    6. for j, k in dict1.items():
    7.    print(j, "的编号为:", k)
    8. 结果:
    9. ('lose', '001')
    10. ('凝光', '002')
    11. ('风霜', '110')
    12. ('学业', '561')
    13. lose 的编号为: 001
    14. 凝光 的编号为: 002
    15. 风霜 的编号为: 110
    16. 学业 的编号为: 561
    17. Process finished with exit code 0

    ​        格式3 --- 遍历字典的键,keys()

    for key dictname.keys():

            处理

    1. players = {'张三':77.5,'李四':55.9,"王五":87.6}
    2. for name in players.keys():
    3.    print("姓名:",name)
    4.    
    5. 结果:
    6. 姓名: 张三
    7. 姓名: 李四
    8. 姓名: 王五
    9. Process finished with exit code 0

    注意:

            1. 不允许同一个键出现2次,创建时如果同一个键被赋值2次,后一个会被记住

    1. dict1 = {'andy': 1001, "score": 92, 'andy': 1002}
    2. print(dict1)
    3. 结果:
    4. {'andy': 1002, 'score': 92}

            2. 键必须不可变,所以使用数字、字符串、元组来充当,列表不行

    1. dict1 = {['andy']: 1001, "score": 92}
    2. print(dict1)
    3. 结果:
    4. Traceback (most recent call last):
    5. File "E:\pythontext\test3.py", line 1916, in
    6. dict1 = {['andy']: 1001, "score": 92}
    7. TypeError: unhashable type: 'list'
    8. Process finished with exit code 1

    10.字典内涵列表

            列表存储在字典中时,一般作为字典的某个键的值出现,需要使用嵌套循环完成处理,外层循环用来取得字典的键,内存循环用于取得值或将列表拆解

            例

    1. sports = {'andy': ['篮球', '足球', '橄榄球'],
    2.          'jenny': ['体操', '游泳'],
    3.          'joker': ['羽毛球', '轮滑鞋', '骑车']}
    4. for name,na_sport in sports.items():
    5.    print('%s喜欢的运动是:'%name,end=' ')
    6.    for sp in na_sport:
    7.        print(' ',sp,end=' ')
    8.    print()
    9.    
    10. 结果:
    11. andy喜欢的运动是:   篮球   足球   橄榄球
    12. jenny喜欢的运动是:   体操   游泳
    13. joker喜欢的运动是:   羽毛球   轮滑鞋   骑车
    14. Process finished with exit code 0

    11.字典内含字典

            字典存储在字典中一般用于表示字典中键的值

    1. wechat = {'001': {'last_name': '张三', 'first_name': '李四', 'city': '西安'},
    2.          '002': {'last_name': '王五', 'first_name': '刘柳', 'city': '咸阳'}}
    3. for num, name in wechat.items():
    4.    print("账号:", num, end=' ')
    5.    print('姓名:', name['first_name'], end=' ')
    6.    print('住址:', name['city'])
    7.    
    8. 结果:
    9. 账号: 001 姓名: 李四 住址: 西安
    10. 账号: 002 姓名: 刘柳 住址: 咸阳
    11. Process finished with exit code 0

  • 相关阅读:
    Vue.js+SpringBoot开发音乐偏好度推荐系统
    7zip自带hash校验功能
    从Spring为什么要用IoC的支点,我撬动了整个Spring的源码脉络
    jpa框架部分重点
    网页游戏的开发框架
    孔乙己脱不下的长衫:人工智能对学历的看法
    线段树【java实现】
    HTML CSS 网页设计作业「动漫小站」
    2023最新UI工作室官网个人主页源码/背景音乐/随机壁纸/一言
    绝地求生:PCL2024春季赛第二轮D2:MnG极致运营,206分登顶榜首
  • 原文地址:https://blog.csdn.net/qq_57289939/article/details/127576895