后浪小萌新Python --- 字典
引语:用列表同时保持多个意义不同的数据的时候, 代码的可读性很低
用字典保存多个意义不同的数据
一、什么是字典(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}
二、元素的增删改查
查 - 获取字典的值
- 获取单个值
字典[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茱迪·福斯特, 安东尼·霍普金斯茱迪·福斯特, 安东尼·霍普金斯茱迪·福斯特, 安东尼·霍普金斯
- 遍历字典
方法一:(效率高)
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 --- 字典相关推荐
- 后浪小萌新Python --- 基础语法
一.注释 注释就是代码中说明性的文字,不参与程序的编译执行(不影响程序的功能). 单行注释 在一行说明性文字前加 # # 这是第一行注释 # 这是第二行注释 # 这是第三行注释 运行如下: 多行注释 ...
- 后浪小萌新Python --- requests的使用
一.requests库 requests是python发送http请求的一个第三方库,一般用于爬虫获取网页数据. 二.发送get请求 语法: requests.get(url, params=None ...
- 后浪小萌新Python --- 列表中的增删改
一.增 在列表中添加元素 append 在列表的最后添加指定的元素(不会产生新的数据, 是直接修改原列表) 语法: 列表.append(元素) 举例: names = ['路飞', '佐罗', '罗宾 ...
- 后浪小萌新Python --- 运算符
一.数学运算符 如:+(加).-(减).*(乘)./(除).%(取模.取余).//(整除).**(幂运算) +(加).-(减).*(乘)./(除) +.-.*./ 和数学中的+.-.x.÷功能一摸一样 ...
- 小萌新准备参加五一建模大赛纪实
小萌新准备参加五一数学建模大赛纪实 2020.4.20 2020.4.21 2020.4.22 2020.4.28 2020.5.1 本萌新在对数学建模一无所知的情况下,被邀请一起参加数学建模比赛,虽 ...
- 浙江杭电计算机系的秦嘉珩,迎新季丨@2019级杭电小萌新,你们的最美辅导员上线啦!...
原标题:迎新季丨@2019级杭电小萌新,你们的最美辅导员上线啦! 2019级小萌新们 欢迎大家加入杭州电子科技大学 在即将开启的四年大学生活中 有这样一位亲切的老师 陪你军训,与你谈心,为你保驾护航 ...
- c++实现含有中文字符的字符串逆转,如:“我是小萌新”转换成“新萌小是我”
一个中文字符占两字节,所以逆转也得两两字符进行逆转,如上图 可得出0和8,1和9,2和6,3和7进行下标交换 由此可得出以下代码: #include <iostream> #include ...
- 来自某位小萌新的Web安全学习--day1
标题草草介绍一哈哈: 哈喽!大家好!这里是网安一名小萌新发来的报道.19级网络空间安全本科生.现在的时间应该是2021-7-14日,正是大二升到大三的暑假阶段.由于前两年种种原因导致我个人的学习方向有 ...
- 小萌新开始做题啦!----------相交链表
总算开始了第一次的博客.内心战战兢兢o(╥﹏╥)o 下面来自LeetCode的一道链表题. 题目描述: 编写一个程序,找到两个单链表相交的起始节点. 如下面的两个链表: 在节点 c1 开始相交. 注意 ...
最新文章
- html label标签 ie6,说说HTML5中label标签的可访问性问题
- 那些视觉上骗了你的东西,你上当了吗?
- 【转】Power Platform(简介)
- SOCKET聊天室字符界面版
- 客户流失预警模型怎么做?
- MMO游戏数值框架概述(偏模拟方向)
- nyoj 239 月老的难题
- sql关于视图的sql_学习SQL:SQL视图
- chart控件怎么使x轴标签全部显示出来
- 边学边写,琐碎记载oracle
- Qpainter事件
- android 时区表以及设置系统时区
- 线程的启动暂停和终止
- 线性回归正则化 regularized linear regression
- Matlab语音信号去噪程序,使用低通巴特沃斯滤波器
- 最新各大CMS采集资源站解析网址合集
- 渗透测试情报收集工具
- RapidMiner数据挖掘
- 快应用入门:第一个快应用程序
- KeilIAR生成库及库的说明与使用
热门文章
- Redis的Java客户端
- 解决Manjaro系统安装MindMaster思维导图用不了(登录不了的问题)的问题,以及代替的方案
- 靓仔的个人邮箱推荐——靓号邮箱!
- 110配线架打法图解_110配线架的打线方法图例
- c 矩阵变matlab矩阵,怎么把一个函数变成矩阵形式
- jstl依赖_[JSTL表达式]
- 今天,王坚正式把“杭州城市大脑”作为礼物献给世界
- 【opencv 450 Image Processing】Image Moments 图像矩
- 仪器使用 | Tek 示波器连接MATLAB
- swiper 重新初始化