从零开始的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模块.正则表达式模式被编译成一系列的字节码 ...
随机推荐
- 关于content-type请求头的说明
Content-Type请求头的作用,用于标记请求体数据的格式,如: 1. Content-Type:application/x-www-form-urlencoded 请求体:b'pwd=123&a ...
- maven中的坐标和仓库
1.坐标 pom.xml中的groupId.artifactId和version都可以构成项目的坐标. <dependency> <groupId></groupI ...
- ios reloadsection 位置偏移
这个问题再iOS11之前不会发生,目前仅在iOS11机型上会出现. 解决这个问题很简单,只需要你在初始化tableview的时候,把estimate的高度都设为0即可. self.tableView. ...
- wireshark利用正则表达式过滤http协议中的jpg png zip等无用的数据包
主要工具:小度随身wifi热点 + wireshark抓包工具.(强烈不建议使用360的产品,非常垃圾,而且干扰代理#墙IP,搞得你不能***) 利用wireshark这个强大的协议分析利器.去分析某 ...
- Angular.js进阶
1.常用指令 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UT ...
- html5 video获取当前时间和视频总时间长度
html: <video id="video-active" class="video-active" width="640" hei ...
- mysql如何配置sql记录
原文链接:http://www.qqdeveloper.com/detail/11/1.html 为什么要记录sql记录 主要目的是为了检测我们的网站安全问题,有效的避免一些sql注入或者是xss攻击 ...
- header()函数用处
header() 函数向客户端发送原始的 HTTP 报头. 认识到一点很重要,即必须在任何实际的输出被发送之前调用 header() 函数(在 PHP 4 以及更高的版本中,您可以使用输出缓存来解决此 ...
- C++函数调用之——值传递、指针传递、引用传递
1.简介 1.值传递:形参时实参的拷贝,改变函数形参并不影响函数外部的实参,这是最常用的一种传递方式,也是最简单的一种传递方式.只需要传递参数,返回值是return考虑的:使用值传递这种方式,调用函数 ...
- Ruby中的类
初识ruby中的类 只需要简单的两行 class Point end 如果我们此时实例化一个类那么他会有一些自省(introspection)的方法 p = Point.new p.methodes( ...