字典

  字典是另一种可变容器模型,且可存储任意类型对象。

一、添加

(1)直接添加

  1. dict={'name':'smilepup'}
  2. dict['age']=20
  3. dict['name']='piggy'
  4. print(dict)
  5. #输出{'name': 'piggy', 'age': 20}

若输入的键存在,就把键对应的值更新为新的值。

若输入的键不存在,就把输入的键值对添加进字典。

(2)setdefault()方法

  1. dict={'name':'smilepup'}
  2. a = dict.setdefault("age",20)
  3. b = dict.setdefault("name",'piggy')
  4. print(dict)
  5. print(a)
  6. print(b)
  7. #输出
  8. #{'name': 'smilepup', 'age': 20}
  9. #20
  10. #smilepup

  若输入的键存在,不改动,并返回键对应的已有值。

  若输入的键不存在,就把输入的键值对添加进字典,并返回新添加的值。

二、查找

(1)根据键来查找对应的值

  1. dict={'name':'smilepup'}
  2. print(dict['name'])
  3. #输出smilepup

  若输入的键不存在会报错。

(2)get() 方法

  1. dict={'name':'smilepup'}
  2. print(dict.get('name'))
  3. print(dict.get('age'))
  4. #输出
  5. #smilepup
  6. #None

  若输入的键存在,并返回键对应的值。

  若输入的键不存在,就返回None。

(2)查找所有的键

  1. dict={'name':'smilepup','age':20}
  2. print(list(dict.keys()))
  3. #输出['name', 'age']

  返回一个dict_keys类型的值,表示字典中所有的键。若要使用这些键,可以把它转换为列表。

(2)查找所有的值

  1. dict={'name':'smilepup','age':20}
  2. print(list(dict.values()))
  3. #输出['smilepup', 20]

  与上同理。

(3)查找所有的键值对

  1. dict={'name':'smilepup','age':20}
  2. print(list(dict.items()))
  3. #输出[('name', 'smilepup'), ('age', 20)]

  与上同理

三、修改

(1)直接法

  1. dict={'name':'smilepup','age':20}
  2. dict['age'] = 21
  3. print(dict)
  4. #输出{'name': 'smilepup', 'age': 21}

(2)update()方法

  1. dict={'name':'smilepup','age':20}
  2. dict2 = {'gender':'male','age':'21'}
  3. dict.update(dict2)
  4. print(dict)
  5. #输出{'name': 'smilepup', 'age': '21', 'gender': 'male'}

  创建一个新的字典来存信息,然后对原有字典进行更新,有点像列表的extend()。

要注意的是:若有键已存在,则修改更新已有键对应的值;若键不存在,则添加新的键值对。

四、删除

(1)del 操作

  1. dict={'name':'smilepup','age':20,'gender':'male'}
  2. del dict['name']
  3. print(dict)
  4. #输出{'age': 20, 'gender': 'male'}

 删除所选键的键值对。

(2)clear()方法

  1. dict={'name':'smilepup','age':20,'gender':'male'}
  2. dict.clear()
  3. print(dict)
  4. #输出{}

  清空字典,留下一个空字典。

(3)pop()方法

  1. dict={'name':'smilepup','age':20,'gender':'male'}
  2. ret = dict.pop('age')
  3. print(dict)
  4. print(ret)
  5. #输出
  6. #{'name': 'smilepup', 'gender': 'male'}
  7. #20

  删除所选键的键值对,并返回已删除键值对的值。

(4)popitem() 方法

  1. dict={'name':'smilepup','age':20,'gender':'male'}
  2. ret = dict.popitem()
  3. print(dict)
  4. print(ret)
  5. #输出
  6. #{'name': 'smilepup', 'age': 20}
  7. #('gender', 'male')

  随机删除一个键值对,并已元组的方式返回所删除的键值对。

五、用for循环遍历字典

方法一:

  1. dict={'name':'smilepup','age':20,'gender':'male'}
  2. for i in dict:
  3. print(i, dict[i])
  4. #输出
  5. #name smilepup
  6. #age 20
  7. #gender male

方法二:

  1. dict={'name':'smilepup','age':20,'gender':'male'}
  2. for i,v in dict.items():
  3. print(i,v)
  4. #输出
  5. #name smilepup
  6. #age 20
  7. #gender male

从零开始的Python学习Episode 5——字典的更多相关文章

  1. 从零开始的Python学习Episode 17——序列化

    序列化 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语 言中也被称之为serialization,marshalling,flattenin ...

  2. 从零开始的Python学习Episode 10——函数

    函数 一.函数的创建 简单格式 def function_name(参数表): 函数体 return 如果没有写return,函数会默认返回一个none 二.函数的参数 必需参数: 调用函数时必需参数 ...

  3. 从零开始的Python学习Episode 9——集合

    集合 集合是一个无序的,不重复的数据组合,是python基本的数据类型,把不同的元素组成一起就形成集合. 一.创建集合 s = set('smile')list = ['1','2','3']prin ...

  4. 从零开始的Python学习Episode 23——进程

    ---恢复内容开始--- 进程 由于GIL的存在,python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程.Python提供了非常好用 ...

  5. 从零开始的Python学习Episode 22——多线程

    多线程 线程 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务. ...

  6. 从零开始的Python学习Episode 20——面向对象(3)

    面向对象之封装 封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体. 隐藏 在python中用双下划线开 ...

  7. 从零开始的Python学习Episode 19——面向对象(2)

    面向对象之继承 继承是一种创建新类的方式,新建的类可以继承一个或多个父类(python支持多继承),父类又可称 为基类或超类,新建的类称为派生类或子类. 子类会“”遗传”父类的属性,从而解决代码重用问 ...

  8. 从零开始的Python学习Episode 16——模块

    一.模块 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相 ...

  9. 从零开始的Python学习Episode 15——正则表达式

    正则表达式 正则表达式(或 RE)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现,所以使用时要导入re模块.正则表达式模式被编译成一系列的字节码 ...

随机推荐

  1. java SSM 框架 代码生成器 websocket即时通讯 shiro redis

    1.   权限管理:点开二级菜单进入三级菜单显示 角色(基础权限)和按钮权限      角色(基础权限): 分角色组和角色,独立分配菜单权限和增删改查权限.      按钮权限: 给角色分配按钮权限. ...

  2. Flask—08-建立自己的博客(02)

    博客项目 上一篇内容完善 自定义字段验证函数 class RegisterForm(FlaskForm): ... def validate_username(self, field): user = ...

  3. Swift_类型选择

    Swift_类型选择 点击查看源码 //类型选择 func test() { class MediaItem { } class Movie: MediaItem { } class Song: Me ...

  4. hdu_4465_Candy

    LazyChild is a lazy child who likes candy very much. Despite being very young, he has two large cand ...

  5. sql 复杂查询 以teacher student course多对多关系为例

    数据库表和值 /* SQLyog Ultimate v8.32 MySQL - 5.7.17-log : Database - course_dbms ************************ ...

  6. 浅谈HTML5中canvas中的beginPath()和closePath()的重要性

    beginPath的作用很简单,就是开始一段新的路径,但在使用canvas绘图的过程中却非常重要 先来看一小段代码: var ctx=document.getElementById("can ...

  7. h5开发中所遇到的兼容性及所遇到的常见问题

    1. 移动端border1px问题 <script> var viewport = document.querySelector("meta[name=viewport]&quo ...

  8. 初识Pentaho(一)

    学习一门语言或工具,首先得知道该工具的用途是什么.Pentaho 的官方定义是一个集数据集成和数据分析于一体的平台.这样的解释还是有点模糊.还是看其有哪些特点吧:  ☐可以进行数据集成.谈到数据集成这 ...

  9. Leecode刷题之旅-C语言/python-204计数质数

    /* * @lc app=leetcode.cn id=204 lang=c * * [204] 计数质数 * * https://leetcode-cn.com/problems/count-pri ...

  10. .Net 面试题 汇总(五)

    1.简述javascript中的“=.==.===”的区别? =赋值 ==比较是否一般相等 "3"==3 //会做类型的隐式转换,true ===比较是否严格相等 "3& ...