• python学习笔记(07)---(内置容器-字典)


    第七章  内置容器(三)

    4.字典

    (1)概念:字典属于可变序列,使用“键 : 值”(key-value)的方式配对存储数据,类似拼音-汉字的映射关系

    (2)格式:dictname={key1:value1,key2:value2,……keyn:valuen}

    • dictname:字典名
    • key:元素的键
    • value:元素各个键所对应的值,可以为任意数据,可不唯一

    (3)字典创建示例

    1. d1 = {'andy': 1001, 'fox': 1002, 'lie': 1003}
    2. print(d1)
    3. # {'andy': 1001, 'fox': 1002, 'lie': 1003}
    4. d2 = {} # 空字典
    5. d3 = dict() # 使用dict()方法创建空字典
    6. name = {'惊春', '芒夏', '露秋', '雪冬'}
    7. sign = {'双鱼座', '金牛座', '狮子座', '射手座'}
    8. # 使用zip()函数将列表或元组对应的元素组合成字典
    9. d4 = dict(zip(name, sign))
    10. print(d4)
    11. # {'露秋': '狮子座', '雪冬': '金牛座', '芒夏': '双鱼座', '惊春': '射手座'}
    12. # 使用 键=值 的方式创建
    13. d5 = dict(a=12, b=34, c=56)
    14. print(d5)
    15. # {'a': 12, 'b': 34, 'c': 56}

    (4)增加字典元素:

    <1> 格式:dictname[键]=值

    <2> 例:

    1. d1 = {'西瓜': 5, '橙子': 8, '橘子': 10}
    2. d1['西瓜'] = 1.5
    3. d1['橘子'] = 12
    4. print(d1) # {'西瓜': 1.5, '橙子': 8, '橘子': 12}

    (5)删除字典

    <1> del 字典名[键]:删除字典中特定元素

    <2> dictname.clear():清空字典全部元素

    <3> del 字典名:删除字典整体

    1. d1 = {'西瓜': 5, '橙子': 8, '橘子': 10}
    2. del d1['西瓜']
    3. print(d1) # {'橙子': 8, '橘子': 10}
    4. d1.clear()
    5. print(d1) # {}
    6. del d1

    (6)字典的访问:dictname[键]

    1. d1 = {'西瓜': 5, '橙子': 8, '橘子': 10}
    2. print(d1['橘子']) # 10

    (7)字典的复制

    <1> 作用:保护源字典的内容

    <2> 格式:new_dictname=dictname.copy()

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

    1. d1 = {'西瓜': 5, '橙子': 8, '橘子': 10}
    2. d2 = d1.copy()
    3. print(d1, '\n', d2)
    4. # {'西瓜': 5, '橙子': 8, '橘子': 10}
    5. # {'西瓜': 5, '橙子': 8, '橘子': 10}
    6. print(id(d1), id(d2)) # 1482992340352 1482992340544

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

    <1> 格式:dictname.get(key,default)

    • key:指定的键
    • default:用于指定键不存在时,返回默认值。可省略,若省略则返回None
    1. d1 = {'name': 'andy', 'age': 17, 'class': 'first'}
    2. print(d1.get('age')) # 17
    3. print(d1.get('sex')) # None
    4. print(d1.get('sex', '无此选项')) # 指定键不存在,指定默认值时,返回默认值
    5. # 若访问的键不存在,执行default

    (9)字典的遍历:

    <1> 格式:遍历值,item()方法

    for  i  in dictname.items():

             处理i

    <2> 格式2:键:值遍历

    for key,value in dictname.items():

             处理key和value

    1. name = {'惊春', '芒夏', '露秋', '雪冬'}
    2. sign = {'双鱼座', '金牛座', '狮子座', '射手座'}
    3. d1 = dict(zip(name, sign))
    4. for i in d1.items():
    5. print(i)
    6. for i, j in d1.items():
    7. print(i, '的星座是', j)
    8. # ('露秋', '狮子座') ....
    9. # 露秋 的星座是 狮子座 ....

    <3> 格式3:遍历字典的键,keys()

    for  key dictname.keys():

             处理

    1. p = {'张三': 67, '张三疯': 78, '罗律师': 89}
    2. for name in p.keys():
    3. print('姓名:', name) # 姓名: 张三......

    <4> 示例:

    PS:不允许同一个键出现两次,创建时如果同一个键被赋值两次,前一个没赋上,后一个会被记住

    1. d1 = {'num': 1001, 'sum': 1002, 'num': 1003}
    2. print(d1) # {'num': 1003, 'sum': 1002}

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

    1. d1 = {'sum': 1002, ['num']: 1003}
    2. print(d1) # 报错。键不能为列表

    (10)字典内含列表:

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

    1. sp = {'andy': ['篮球', '足球', '橄榄球'], 'sunny': ['体操', '游泳', ], 'xiaoming': ['羽毛球', '乒乓球']}
    2. for name, na_sp in sp.items():
    3. print('%s喜欢的运动是:' % name, end=' ')
    4. for sport in na_sp:
    5. print(' ', sport, end=' ')
    6. print() # andy喜欢的运动是: 篮球 足球 橄榄球 ...

    (11)字典内含字典

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

    1. wechat = {'001': {'lastname': '张三', 'firstname': '张三疯', 'city': '西安'},
    2. '002': {'lastname': '李四', 'firstname': '李四疯', 'city': '成都'}}
    3. for num, name in wechat.items():
    4. print('账号:', num, end=' ')
    5. print('姓名:', name['firstname'], end=' ')
    6. print('住址:', name['city'])
    7. # 账号: 001 姓名: 张三疯 住址: 西安
    8. # 账号: 002 姓名: 李四疯 住址: 成都
  • 相关阅读:
    KMP算法——通俗易懂讲好KMP算法:实例图解分析+详细代码注解 --》你的所有疑惑在本文都能得到解答
    284_C++_创建循环检测定时器到时线程
    社区投稿| 以安全视角,深度剖析 Sui Staking 与 LSD
    Python使用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模拟进行股价预测
    公司官网建站笔记(六):域名进行公安备案并将备案号显示在网页底部
    什么是 Spring?为什么学它?
    【聚类算法】带你轻松搞懂K-means聚类(含代码以及详细解释)
    微信小程序实现上下手势滑动切换
    以目标检测和分类任务为例理解One-Hot Code
    哈希树讲解
  • 原文地址:https://blog.csdn.net/weixin_62443409/article/details/127857042