引语:用列表同时保持多个意义不同的数据的时候, 代码的可读性很低
           用字典保存多个意义不同的数据

一、什么是字典(dict)

字典是容器型数据类型的数据, 将{}作为容器的标志,
里面多个元素用逗号隔开(其中元素必须是键值对):
{键1:值1, 键2:值2,…}

字典是可变(支持增删改);字典是无序(不支持下标操作)

字典的元素:键(为了区分不同的数据)是不可变的(数字、字符串、元组), 唯一的;
                      值可以是任何类型的数据,并且可以重复

举例:

# 不可变(数字、字符串(用的最多)、元组)
print({'a':10, 'b':20} == {'b': 20, 'a': 10})
dict1 = {10: 100,'abc': 200,(10,): 300
}# 不可变(列表不行)
dict2 = {[10, 20]: 100}  # TypeError: unhashable type: 'list'# 唯一性
dict3 = {'name': '张三', 'name': 100}
print(dict3)

运行结果:

TrueTypeError: unhashable type: 'list'{'name': 100}

二、元素的增删改查

查 - 获取字典的值

  1. 获取单个值

    字典[key] - 获取字典中指定key对应的值(如果key不存在,会报错)

    字典.get(key) - 获取字典中指定key对应的值(如果key不存在,不会报错,返回None)

    字典.get(key, 默认值) - 获取字典中指定key对应的值(如果key不存在,不会报错,返回默认值)

举例:

movie1 = {'name': '战狼','director': '吴京','actor': '吴京','release_time': '2015','kind': '动作/战争/军事'
}
print(movie1['name'])
print(movie1['kind'])movie2 = {'name': '沉默的羔羊','director': '乔纳森·戴米','actor': '茱迪·福斯特, 安东尼·霍普金斯','release_time': '1991','kind': '惊悚'
}print(movie2['name'])
print(movie1['score'])  # KeyError: 'score'
print(movie2.get('asd'))
print(movie2.get('release_time', '2020-1-1'))
print(movie2.get('scor', '1'))
print(movie2['actor'])
print(movie2.get('actor'))
print(movie2.get('actor', '杨幂'))

运行结果:

战狼KeyError: 'score'动作/战争/军事沉默的羔羊None19911茱迪·福斯特, 安东尼·霍普金斯茱迪·福斯特, 安东尼·霍普金斯茱迪·福斯特, 安东尼·霍普金斯
  1. 遍历字典

    方法一:(效率高)

    for 变量 in 字典:
          循环体(变量在循环体中得到的是字典的key)

    方法二:(此方法遍历了2次)

    for key,value in 字典.items():
          循环体(循环体中key取到的所有的键,变量2取到的是所有键对应的值)

增/改 - 添加键值对/修改键值对的值

字典[key] = 值 - 当key不存在就是添加键值对;当key存在的时候就是修改key对应的值

举例:

subject = {'name': 'Python','score': 3,'class_hour': 20,'direction': ['数据分析', 'web后端', '爬虫', '自动化测试', '自动化运维']
}
subject['teacher'] = '余婷'
print(subject)subject['score'] = 4
print(subject)

运行结果:

{'name': 'Python', 'score': 3, 'class_hour': 20, 'direction': ['数据分析', 'web后端', '爬虫', '自动化测试', '自动化运维'], 'teacher': '余婷'}
{'name': 'Python', 'score': 4, 'class_hour': 20, 'direction': ['数据分析', 'web后端', '爬虫', '自动化测试', '自动化运维'], 'teacher': '余婷'}

del 字典[key] - 删除字典指定key对应的键值对

字典.pop(key) - 取出字典中指定key对应的值

举例:

subject = {'name': 'Python','score': 3,'class_hour': 20,'direction': ['数据分析', 'web后端', '爬虫', '自动化测试', '自动化运维']
}
del subject['class_hour']
print(subject)del_item = subject.pop('direction')
print(subject)
print(del_item)

运行结果:

{'name': 'Python', 'score': 3, 'direction': ['数据分析', 'web后端', '爬虫', '自动化测试', '自动化运维']}
{'name': 'Python', 'score': 3}
['数据分析', 'web后端', '爬虫', '自动化测试', '自动化运维']

后浪小萌新Python --- 字典相关推荐

  1. 后浪小萌新Python --- 基础语法

    一.注释 注释就是代码中说明性的文字,不参与程序的编译执行(不影响程序的功能). 单行注释 在一行说明性文字前加 # # 这是第一行注释 # 这是第二行注释 # 这是第三行注释 运行如下: 多行注释 ...

  2. 后浪小萌新Python --- requests的使用

    一.requests库 requests是python发送http请求的一个第三方库,一般用于爬虫获取网页数据. 二.发送get请求 语法: requests.get(url, params=None ...

  3. 后浪小萌新Python --- 列表中的增删改

    一.增 在列表中添加元素 append 在列表的最后添加指定的元素(不会产生新的数据, 是直接修改原列表) 语法: 列表.append(元素) 举例: names = ['路飞', '佐罗', '罗宾 ...

  4. 后浪小萌新Python --- 运算符

    一.数学运算符 如:+(加).-(减).*(乘)./(除).%(取模.取余).//(整除).**(幂运算) +(加).-(减).*(乘)./(除) +.-.*./ 和数学中的+.-.x.÷功能一摸一样 ...

  5. 小萌新准备参加五一建模大赛纪实

    小萌新准备参加五一数学建模大赛纪实 2020.4.20 2020.4.21 2020.4.22 2020.4.28 2020.5.1 本萌新在对数学建模一无所知的情况下,被邀请一起参加数学建模比赛,虽 ...

  6. 浙江杭电计算机系的秦嘉珩,迎新季丨@2019级杭电小萌新,你们的最美辅导员上线啦!...

    原标题:迎新季丨@2019级杭电小萌新,你们的最美辅导员上线啦! 2019级小萌新们 欢迎大家加入杭州电子科技大学 在即将开启的四年大学生活中 有这样一位亲切的老师 陪你军训,与你谈心,为你保驾护航 ...

  7. c++实现含有中文字符的字符串逆转,如:“我是小萌新”转换成“新萌小是我”

    一个中文字符占两字节,所以逆转也得两两字符进行逆转,如上图 可得出0和8,1和9,2和6,3和7进行下标交换 由此可得出以下代码: #include <iostream> #include ...

  8. 来自某位小萌新的Web安全学习--day1

    标题草草介绍一哈哈: 哈喽!大家好!这里是网安一名小萌新发来的报道.19级网络空间安全本科生.现在的时间应该是2021-7-14日,正是大二升到大三的暑假阶段.由于前两年种种原因导致我个人的学习方向有 ...

  9. 小萌新开始做题啦!----------相交链表

    总算开始了第一次的博客.内心战战兢兢o(╥﹏╥)o 下面来自LeetCode的一道链表题. 题目描述: 编写一个程序,找到两个单链表相交的起始节点. 如下面的两个链表: 在节点 c1 开始相交. 注意 ...

最新文章

  1. html label标签 ie6,说说HTML5中label标签的可访问性问题
  2. 那些视觉上骗了你的东西,你上当了吗?
  3. 【转】Power Platform(简介)
  4. SOCKET聊天室字符界面版
  5. 客户流失预警模型怎么做?
  6. MMO游戏数值框架概述(偏模拟方向)
  7. nyoj 239 月老的难题
  8. sql关于视图的sql_学习SQL:SQL视图
  9. chart控件怎么使x轴标签全部显示出来
  10. 边学边写,琐碎记载oracle
  11. Qpainter事件
  12. android 时区表以及设置系统时区
  13. 线程的启动暂停和终止
  14. 线性回归正则化 regularized linear regression
  15. Matlab语音信号去噪程序,使用低通巴特沃斯滤波器
  16. 最新各大CMS采集资源站解析网址合集
  17. 渗透测试情报收集工具
  18. RapidMiner数据挖掘
  19. 快应用入门:第一个快应用程序
  20. KeilIAR生成库及库的说明与使用

热门文章

  1. Redis的Java客户端
  2. 解决Manjaro系统安装MindMaster思维导图用不了(登录不了的问题)的问题,以及代替的方案
  3. 靓仔的个人邮箱推荐——靓号邮箱!
  4. 110配线架打法图解_110配线架的打线方法图例
  5. c 矩阵变matlab矩阵,怎么把一个函数变成矩阵形式
  6. jstl依赖_[JSTL表达式]
  7. 今天,王坚正式把“杭州城市大脑”作为礼物献给世界
  8. 【opencv 450 Image Processing】Image Moments 图像矩
  9. 仪器使用 | Tek 示波器连接MATLAB
  10. swiper 重新初始化