(三)字典

2023-11-06

一、什么是“字典”

字典是Python语言中唯一的映射类型
它的本质是key和value以及其对应关系的一种集合一个key可以对应一个多个value。

例如以下变量info为字典类型:

info = {'name':'班长', 'id':100, 'sex':'f', 'address':'地球亚洲中国北京'}

说明:
 • 字典和列表一样,也能够存储多个数据
 • 列表中找某个元素时,是根据下标进行的
 • 字典中找某个元素时,是根据 ‘键’(就是冒号:前面的那个值,例如上面代码中的’name’、’id’、’sex’)
 • 字典的每个元素由2部分组成,键:值。例如 ‘name’:’班长’ ,’name’为键,’班长’为值
  
  
根据键访问值的方法:

info = {'name':'班长', 'id':100, 'sex':'f', 'address':'地球亚洲中国北京'}

print(info['name'])
print(info['address'])


结果:
班长
地球亚洲中国北京

若访问不存在的键,则会报错:

>>> info['age']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'age'

在我们不确定字典中是否存在某个键而又想获取其值时,可以使用get方法,还可以设置默认值:

>>> age = info.get('age')
>>> age     #'age'键不存在,所以age为None
>>> type(age)
<type 'NoneType'>
>>> age = info.get('age', 18)     # 若info中不存在'age'这个键,就返回默认值18
>>> age
18

.  
  
    


二、字典的常见操作

<1>修改元素

字典的每个元素中的数据是可以修改的,只要通过key找到,即可修改

info = {'name':'班长', 'id':100, 'sex':'f', 'address':'地球亚洲中国北京'}

newId = input('请输入新的学号')

info['id'] = int(newId)

print('修改之后的id为%d:'%info['id'])

.  
  

<2>添加元素

如果在使用 变量名[‘键’] = 数据 时,这个“键”在字典中,不存在,那么就会新增这个元素

info = {'name':'班长', 'sex':'f', 'address':'地球亚洲中国北京'}

newId = input('请输入新的学号')

info['id'] = newId

print('添加之后的id为:%d'%info['id'])


结果:
请输入新的学号188
添加之后的id为: 188

.  
    

<3>删除元素

对字典进行删除操作,有一下几种:
 • del
 • clear()
 
del删除指定的元素:

info = {'name':'班长', 'sex':'f', 'address':'地球亚洲中国北京'}

print('删除前,%s'%info['name'])

del info['name']

print('删除后,%s'%info['name'])

del删除整个字典:

info = {'name':'monitor', 'sex':'f', 'address':'China'}

print('删除前,%s'%info)

del info

print('删除后,%s'%info)

clear清空整个字典:

info = {'name':'monitor', 'sex':'f', 'address':'China'}

print('清空前,%s'%info)

info.clear()

print('清空后,%s'%info)

.  
  

<4>len()

用于测量字典中,键值对的个数
这里写图片描述
.  
  

<5>keys

返回一个包含字典所有KEY的列表
这里写图片描述
.  
  

<6>values

返回一个包含字典所有value的列表
这里写图片描述
.  
  

<7>items

返回一个包含所有(键,值)元祖的列表
这里写图片描述
.  
  

<8>has_key

dict.has_key(key)如果key在字典中,返回True,否则返回False
这里写图片描述
.  
  


三、字典的遍历

通过for … in …:的语法结构,我们可以遍历字符串、列表、元组、字典等数据结构。

1、字符串遍历

>>> a_str = "hello itcast"
>>> for char in a_str:
...     print(char,end=' ')
...
h e l l o   i t c a s t

2、列表遍历

>>> a_list = [1, 2, 3, 4, 5]
>>> for num in a_list:
...     print(num,end=' ')
...
1 2 3 4 5

3、元组遍历

>>> a_turple = (1, 2, 3, 4, 5)
>>> for num in a_turple:
...     print(num,end=" ")
1 2 3 4 5

4、字典遍历

<1> 遍历字典的key(键)

这里写图片描述

<2> 遍历字典的value(值)

这里写图片描述

<3> 遍历字典的项(元素)

这里写图片描述

<4> 遍历字典的key-value(键值对)

这里写图片描述

5、带下标索引的遍历

>>> chars = ['a', 'b', 'c', 'd']
>>> i = 0
>>> for chr in chars:
...     print("%d %s"%(i, chr))
...     i += 1
...
0 a
1 b
2 c
3 d

也可以使用enumerate()函数

>>> chars = ['a', 'b', 'c', 'd']
>>> for i, chr in enumerate(chars):
...     print i, chr
...
0 a
1 b
2 c
3 d
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(三)字典 的相关文章

  • 与区域指示符字符类匹配的 python 正则表达式

    我在 Mac 上使用 python 2 7 10 表情符号中的标志由一对表示区域指示符号 https en wikipedia org wiki Regional Indicator Symbol 我想编写一个 python 正则表达式来在
  • 元组有什么用?

    我现在正在学习 Python 课程 我们刚刚介绍了元组作为数据类型之一 我阅读了它的维基百科页面 但是 我无法弄清楚这种数据类型在实践中会有什么用处 我可以提供一些需要一组不可变数字的示例吗 也许是在 Python 中 这与列表有何不同 每
  • 如何使用 opencv.omnidir 模块对鱼眼图像进行去扭曲

    我正在尝试使用全向模块 http docs opencv org trunk db dd2 namespacecv 1 1omnidir html用于对鱼眼图像进行扭曲处理Python 我正在尝试适应这一点C 教程 http docs op
  • Python getstatusoutput 替换不返回完整输出

    我发现了这个很棒的替代品getstatusoutput Python 2 中的函数在 Unix 和 Windows 上同样有效 不过我觉得这个方法有问题output被构建 它只返回输出的最后一行 但我不明白为什么 任何帮助都是极好的 def
  • YOLOv8获取预测边界框

    我想将 OpenCV 与 YOLOv8 集成ultralytics 所以我想从模型预测中获取边界框坐标 我该怎么做呢 from ultralytics import YOLO import cv2 model YOLO yolov8n pt
  • Pandas Merge (pd.merge) 如何设置索引和连接

    我有两个 pandas 数据框 dfLeft 和 dfRight 以日期作为索引 dfLeft cusip factorL date 2012 01 03 XXXX 4 5 2012 01 03 YYYY 6 2 2012 01 04 XX
  • 使用 xlrd 打开 BytesIO (xlsx)

    我正在使用 Django 需要读取上传的 xlsx 文件的工作表和单元格 使用 xlrd 应该可以 但因为文件必须保留在内存中并且可能不会保存到我不知道如何继续的位置 本例中的起点是一个带有上传输入和提交按钮的网页 提交后 文件被捕获req
  • 如何在 Python 中解析和比较 ISO 8601 持续时间? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 Python v2 库 它允许我解析和比较 ISO 8601 持续时间may处于不同单
  • 如何在不丢失注释和格式的情况下更新 YAML 文件 / Python 中的 YAML 自动重构

    我想在 Python 中更新 YAML 文件值 而不丢失 Python 中的格式和注释 例如我想改造 YAML 文件 value 456 nice value to value 6 nice value 界面类似于 y yaml load
  • Docker 中的 Python 日志记录

    我正在 Ubuntu Web 服务器上的 Docker 容器中测试运行 python 脚本 我正在尝试查找由 Python Logger 模块生成的日志文件 下面是我的Python脚本 import time import logging
  • 如何通过 TLS 1.2 运行 django runserver

    我正在本地 Mac OS X 机器上测试 Stripe 订单 我正在实现这段代码 stripe api key settings STRIPE SECRET order stripe Order create currency usd em
  • 加快网络抓取速度

    我正在使用一个非常简单的网络抓取工具抓取 23770 个网页scrapy 我对 scrapy 甚至 python 都很陌生 但设法编写了一个可以完成这项工作的蜘蛛 然而 它确实很慢 爬行 23770 个页面大约需要 28 小时 我看过scr
  • 仅第一个加载的 Django 站点有效

    我最近向 stackoverflow 提交了一个问题 标题为使用mod wsgi在apache上多次请求后Django无限加载 https stackoverflow com questions 71705909 django infini
  • 如何断言 Unittest 上的可迭代对象不为空?

    向服务提交查询后 我会收到一本字典或一个列表 我想确保它不为空 我使用Python 2 7 我很惊讶没有任何assertEmpty方法为unittest TestCase类实例 现有的替代方案看起来并不正确 self assertTrue
  • Pandas 将多行列数据帧转换为单行多列数据帧

    我的数据框如下 code df Car measurements Before After amb temp 30 268212 26 627491 engine temp 41 812730 39 254255 engine eff 15
  • 根据列 value_counts 过滤数据框(pandas)

    我是第一次尝试熊猫 我有一个包含两列的数据框 user id and string 每个 user id 可能有多个字符串 因此会多次出现在数据帧中 我想从中导出另一个数据框 一个只有那些user ids列出至少有 2 个或更多string
  • Python:XML 内所有标签名称中的字符串替换(将连字符替换为下划线)

    我有一个格式不太好的 XML 标签名称内有连字符 我想用下划线替换它 以便能够与 lxml objectify 一起使用 我想替换所有标签名称 包括嵌套的子标签 示例 XML
  • 实现 XGboost 自定义目标函数

    我正在尝试使用 XGboost 实现自定义目标函数 在 R 中 但我也使用 python 所以有关 python 的任何反馈也很好 我创建了一个返回梯度和粗麻布的函数 它工作正常 但是当我尝试运行 xgb train 时它不起作用 然后 我
  • 更改 Tk 标签小部件中单个单词的颜色

    我想更改 Tkinter 标签小部件中单个单词的字体颜色 我知道可以使用文本小部件来实现与我想要完成的类似的事情 例如使单词 YELLOW 显示为黄色 self text tag config tag yel fg clr yellow s
  • 使用 z = f(x, y) 形式的 B 样条方法来拟合 z = f(x)

    作为一个潜在的解决方案这个问题 https stackoverflow com questions 76476327 how to avoid creating many binary switching variables in gekk

随机推荐

  • 哈希算法总结

    目录 1 Hash是什么 它的作用 2 Hash算法有什么特点 2 1 Hash在管理数据结构中的应用 2 1 Hash在在密码学中的应用 3 Hash算法是如何实现的 4 Hash有哪些流行的算法 5 那么 何谓Hash算法的 碰撞 5
  • Markdown文件关机没保存,怎么恢复

    1 2 点开找到你想恢复的时间段的文件
  • JS date格式化

    Date prototype Format function fmt author meizz use strict jshint var o M this getMonth 1 月份 d this getDate 日 h this get
  • Qt Creator中,include路径包含过程(或如何找到对应的头文件)

    Qt Creator中 include路径包含过程 或如何找到对应的头文件 利用Qt Creator开发程序时 需要包含利用 include来添加头文件 大家都知道 include lt gt 用于包含标准库头文件 路径在安装软件的incl
  • centos7环境下mysql8的tar包的安装及配置

    内网环境下安装及配置 并将数据保存指向某个文件夹 因为博主这里的数据文件夹是有硬盘挂靠的 centos 7 aliyun CentOS 7 x86 64 DVD 1810 mysql mysql 8 0 17 linux glibc2 12
  • 【题解】闯关游戏

    题目描述 艾伦正在闯关 游戏有N个关卡 按照必须完成的顺序编号为1到N 每个关卡可以用两个参数来描述 prob i 和value i 这些参数的含义如下 每当艾伦尝试闯第i关时 他要么顺利通过 要么 挂掉 他完成该关卡的概率总是prob i
  • Red5应用开发(二)直播串流与录制

    环境 操作系统 win10 1803 Eclipse版本 4 7 3a Oxygen J2EE版本 Red5 Server版本 1 0 8 Release 环境搭建参考前一篇文章 Red5应用开发 一 开发环境搭建 后续不再涉及red5 f
  • 职场加班

    总是听到形形色色的职场加班过劳死的故事 甚至有人写了一篇文章 别让老板杀了你 职场果真那么恐怖吗 其实公司怎么想那是公司的事情 公司有权想着把你干掉 把你榨干 因为这样对于公司最有利 但是 问题在于我们自己怎么想呢 在我看来 在这个社会上混
  • python 泛型函数--singledispatch的使用

    functools singledispatch 将一个函数转变为单一分派的泛型函数 用 singledispatch装饰一个函数 将定义一个泛型函数 注意 我们创建的函数获得分派的依据是第一个参数的类型 from functools im
  • SSM框架整合方案(Spring+SpringMVC+Mybatis)

    一 将application进行纵向切分 每一个配置文件只配置与之相关的Bean 除此之外 项目中通常还有log4j properties SqlMapConfig xml db properties文件 二 各文件配置方案详解 1 日志组
  • IDDPM原理和代码剖析

    前言 Improved Denoising Diffusion Probabilistic Models IDDPM 是上一篇 Denoising Diffusion Probabilistic Models DDPM 的改进工作 之前一些
  • 2022年比若依更香的开源项目

    项目名 cpms 是Concise practical management system 的首字母缩写 意思是 简洁实用的后台管理系统 cpms开源项目目前分为 cpms cloud微服务架构和cpms单体应用架构 cpms cloud是
  • Ant Design:Form表单组件的正确使用

    Form 设置表单初始默认值 initialValues 只在初始化和重置表单时生效 Object 表单字段状态发生改变触发的回调函数 onValuesChange function changedValues allValues Form
  • vue3.2 父子组件传参

    父组件father vue 子组件child vue 1 父传子 把子组件引入到父组件里 定义数据 然后在子组件里使用props接收数据 father vue
  • python已知两边求第三边_探究“已知一个三角形两边及其夹角,求第三边”的问题...

    探究 已知一个三角形两边及其夹角求第三边 的问题 知识点 余弦定理 对应版本章节 本节课是人民教育出版社出版的高中数学 A 版数学必修 5 第一章 解三角 形 第一节第二课时余弦定理的内容 教学目标 1 理解利用向量猜想证明余弦定理 2 掌
  • 下载及安装Python详细步骤

    安装python分三个步骤 下载python 安装python 检查是否安装成功 1 下载Python 1 python下载地址https www python org downloads 2 选择下载的版本 3 点开Download后 找
  • NXP i.MX6ULL 移植python3.9.5

    项目场景 在眺望电子TW AC6G EVM开发板上移植python3 9 5 编译环境及开发包 主机 ubuntu18 04 交叉编译器 arm linux gnueabihf gcc QT5 12 8 qt everywhere open
  • pytorch用LeNet5识别Mnist手写体数据集(训练+预测单张输入图片代码)

    首先 在论文上的LeNet5的结构如下 由于论文的数据集是32x32的 mnist数据集是28x28的 所有只有INPUT变了 其余地方会严格按照LeNet5的结构编写程序 训练代码 import torch import torch nn
  • 搜索学习心得

    在学习了众多搜索的方式后 不由感慨 啊 太巨了 今天huayucaiji我就给大家讲一讲C 搜索的心得吧 深度优先搜索 广度优先搜索 迭代加深搜索 一个一个讲吧 深度优先搜索 深度优先搜索 下简称 深搜 简称DFS 是简洁明了的搜索方式 以
  • (三)字典

    一 什么是 字典 字典是Python语言中唯一的映射类型 它的本质是key和value以及其对应关系的一种集合 一个key可以对应一个多个value 例如以下变量info为字典类型 info name 班长 id 100 sex f add