从零开始的Python学习Episode 5——字典
字典
字典是另一种可变容器模型,且可存储任意类型对象。
一、添加
(1)直接添加
- dict={'name':'smilepup'}
- dict['age']=20
- dict['name']='piggy'
- print(dict)
- #输出{'name': 'piggy', 'age': 20}
若输入的键存在,就把键对应的值更新为新的值。
若输入的键不存在,就把输入的键值对添加进字典。
(2)setdefault()方法
- dict={'name':'smilepup'}
- a = dict.setdefault("age",20)
- b = dict.setdefault("name",'piggy')
- print(dict)
- print(a)
- print(b)
- #输出
- #{'name': 'smilepup', 'age': 20}
- #20
- #smilepup
若输入的键存在,不改动,并返回键对应的已有值。
若输入的键不存在,就把输入的键值对添加进字典,并返回新添加的值。
二、查找
(1)根据键来查找对应的值
- dict={'name':'smilepup'}
- print(dict['name'])
- #输出smilepup
若输入的键不存在会报错。
(2)get() 方法
- dict={'name':'smilepup'}
- print(dict.get('name'))
- print(dict.get('age'))
- #输出
- #smilepup
- #None
若输入的键存在,并返回键对应的值。
若输入的键不存在,就返回None。
(2)查找所有的键
- dict={'name':'smilepup','age':20}
- print(list(dict.keys()))
- #输出['name', 'age']
返回一个dict_keys类型的值,表示字典中所有的键。若要使用这些键,可以把它转换为列表。
(2)查找所有的值
- dict={'name':'smilepup','age':20}
- print(list(dict.values()))
- #输出['smilepup', 20]
与上同理。
(3)查找所有的键值对
- dict={'name':'smilepup','age':20}
- print(list(dict.items()))
- #输出[('name', 'smilepup'), ('age', 20)]
与上同理
三、修改
(1)直接法
- dict={'name':'smilepup','age':20}
- dict['age'] = 21
- print(dict)
- #输出{'name': 'smilepup', 'age': 21}
(2)update()方法
- dict={'name':'smilepup','age':20}
- dict2 = {'gender':'male','age':'21'}
- dict.update(dict2)
- print(dict)
- #输出{'name': 'smilepup', 'age': '21', 'gender': 'male'}
创建一个新的字典来存信息,然后对原有字典进行更新,有点像列表的extend()。
要注意的是:若有键已存在,则修改更新已有键对应的值;若键不存在,则添加新的键值对。
四、删除
(1)del 操作
- dict={'name':'smilepup','age':20,'gender':'male'}
- del dict['name']
- print(dict)
- #输出{'age': 20, 'gender': 'male'}
删除所选键的键值对。
(2)clear()方法
- dict={'name':'smilepup','age':20,'gender':'male'}
- dict.clear()
- print(dict)
- #输出{}
清空字典,留下一个空字典。
(3)pop()方法
- dict={'name':'smilepup','age':20,'gender':'male'}
- ret = dict.pop('age')
- print(dict)
- print(ret)
- #输出
- #{'name': 'smilepup', 'gender': 'male'}
- #20
删除所选键的键值对,并返回已删除键值对的值。
(4)popitem() 方法
- dict={'name':'smilepup','age':20,'gender':'male'}
- ret = dict.popitem()
- print(dict)
- print(ret)
- #输出
- #{'name': 'smilepup', 'age': 20}
- #('gender', 'male')
随机删除一个键值对,并已元组的方式返回所删除的键值对。
五、用for循环遍历字典
方法一:
- dict={'name':'smilepup','age':20,'gender':'male'}
- for i in dict:
- print(i, dict[i])
- #输出
- #name smilepup
- #age 20
- #gender male
方法二:
- dict={'name':'smilepup','age':20,'gender':'male'}
- for i,v in dict.items():
- print(i,v)
- #输出
- #name smilepup
- #age 20
- #gender male
从零开始的Python学习Episode 5——字典的更多相关文章
- 从零开始的Python学习Episode 17——序列化
序列化 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语 言中也被称之为serialization,marshalling,flattenin ...
- 从零开始的Python学习Episode 10——函数
函数 一.函数的创建 简单格式 def function_name(参数表): 函数体 return 如果没有写return,函数会默认返回一个none 二.函数的参数 必需参数: 调用函数时必需参数 ...
- 从零开始的Python学习Episode 9——集合
集合 集合是一个无序的,不重复的数据组合,是python基本的数据类型,把不同的元素组成一起就形成集合. 一.创建集合 s = set('smile')list = ['1','2','3']prin ...
- 从零开始的Python学习Episode 23——进程
---恢复内容开始--- 进程 由于GIL的存在,python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程.Python提供了非常好用 ...
- 从零开始的Python学习Episode 22——多线程
多线程 线程 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务. ...
- 从零开始的Python学习Episode 20——面向对象(3)
面向对象之封装 封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体. 隐藏 在python中用双下划线开 ...
- 从零开始的Python学习Episode 19——面向对象(2)
面向对象之继承 继承是一种创建新类的方式,新建的类可以继承一个或多个父类(python支持多继承),父类又可称 为基类或超类,新建的类称为派生类或子类. 子类会“”遗传”父类的属性,从而解决代码重用问 ...
- 从零开始的Python学习Episode 16——模块
一.模块 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相 ...
- 从零开始的Python学习Episode 15——正则表达式
正则表达式 正则表达式(或 RE)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现,所以使用时要导入re模块.正则表达式模式被编译成一系列的字节码 ...
随机推荐
- java SSM 框架 代码生成器 websocket即时通讯 shiro redis
1. 权限管理:点开二级菜单进入三级菜单显示 角色(基础权限)和按钮权限 角色(基础权限): 分角色组和角色,独立分配菜单权限和增删改查权限. 按钮权限: 给角色分配按钮权限. ...
- Flask—08-建立自己的博客(02)
博客项目 上一篇内容完善 自定义字段验证函数 class RegisterForm(FlaskForm): ... def validate_username(self, field): user = ...
- Swift_类型选择
Swift_类型选择 点击查看源码 //类型选择 func test() { class MediaItem { } class Movie: MediaItem { } class Song: Me ...
- hdu_4465_Candy
LazyChild is a lazy child who likes candy very much. Despite being very young, he has two large cand ...
- sql 复杂查询 以teacher student course多对多关系为例
数据库表和值 /* SQLyog Ultimate v8.32 MySQL - 5.7.17-log : Database - course_dbms ************************ ...
- 浅谈HTML5中canvas中的beginPath()和closePath()的重要性
beginPath的作用很简单,就是开始一段新的路径,但在使用canvas绘图的过程中却非常重要 先来看一小段代码: var ctx=document.getElementById("can ...
- h5开发中所遇到的兼容性及所遇到的常见问题
1. 移动端border1px问题 <script> var viewport = document.querySelector("meta[name=viewport]&quo ...
- 初识Pentaho(一)
学习一门语言或工具,首先得知道该工具的用途是什么.Pentaho 的官方定义是一个集数据集成和数据分析于一体的平台.这样的解释还是有点模糊.还是看其有哪些特点吧: ☐可以进行数据集成.谈到数据集成这 ...
- Leecode刷题之旅-C语言/python-204计数质数
/* * @lc app=leetcode.cn id=204 lang=c * * [204] 计数质数 * * https://leetcode-cn.com/problems/count-pri ...
- .Net 面试题 汇总(五)
1.简述javascript中的“=.==.===”的区别? =赋值 ==比较是否一般相等 "3"==3 //会做类型的隐式转换,true ===比较是否严格相等 "3& ...