Python字典及基本操作(超级详细)

2023-10-26

字典也是 Python 提供的一种常用的数据结构,它用于存放具有映射关系的数据。

 

比如有份成绩表数据,语文:79,数学:80,英语:92,这组数据看上去像两个列表,但这两个列表的元素之间有一定的关联关系。如果单纯使用两个列表来保存这组数据,则无法记录两组数据之间的关联关系。

为了保存具有映射关系的数据,Python 提供了字典,字典相当于保存了两组数据,其中一组数据是关键数据,被称为 key;另一组数据可通过 key 来访问,被称为 value。形象地看,字典中 key 和 value 的关联关系如图 1 所示:

Python字典及基本操作(超级详细)
图 1 字典保存的关联数据

由于字典中的 key 是非常关键的数据,而且程序需要通过 key 来访问 value,因此字典中的 key 不允许重复。

程序既可使用花括号语法来创建字典,也可使用 dict() 函数来创建字典。实际上,dict 是一种类型,它就是 Python 中的字典类型。

在使用花括号语法创建字典时,花括号中应包含多个 key-value 对,key 与 value 之间用英文冒号隔开;多个 key-value 对之间用英文逗号隔开。

如下代码示范了使用花括号语法创建字典:

  scores = {'语文': 89, '数学': 92, '英语': 93}  print(scores)  # 空的花括号代表空的dict  empty_dict = {}  print(empty_dict)  # 使用元组作为dict的key  dict2 = {(20, 30):'good', 30:'bad'}  print(dict2)

上面程序中第 1 行代码创建了一个简单的 dict,该 dict 的 key 是字符串,value 是整数;第 4 行代码使用花括号创建了一个空的字典;第 7 行代码创建的字典中第一个 key 是元组,第二个 key 是整数值,这都是合法的。

需要指出的是,元组可以作为 dict 的 key,但列表不能作为元组的 key。这是由于 dict 要求 key 必须是不可变类型,但列表是可变类型,因此列表不能作为元组的 key。

在使用 dict() 函数创建字典时,可以传入多个列表或元组参数作为 key-value 对,每个列表或元组将被当成一个 key-value 对,因此这些列表或元组都只能包含两个元素。例如如下代码:

  vegetables = [('celery', 1.58), ('brocoli', 1.29), ('lettuce', 2.19)]  # 创建包含3组key-value对的字典  dict3 = dict(vegetables)  print(dict3) # {'celery': 1.58, 'brocoli': 1.29, 'lettuce': 2.19}  cars = [['BMW', 8.5], ['BENS', 8.3], ['AUDI', 7.9]]  # 创建包含3组key-value对的字典  dict4 = dict(cars)  print(dict4) # {'BMW': 8.5, 'BENS': 8.3, 'AUDI': 7.9}

如果不为 dict() 函数传入任何参数,则代表创建一个空的字典。例如如下代码:

  # 创建空的字典  dict5 = dict()  print(dict5) # {}

还可通过为 dict 指定关键字参数创建

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python字典及基本操作(超级详细) 的相关文章

  • 导入错误:没有名为请求的模块

    我尝试导入requests https requests readthedocs io import requests 但我收到一个错误 导入错误 没有名为请求的模块 Requests 不是内置模块 默认的 python 安装不附带 因此您
  • 在python中发送多个文件

    我是 python 新手 我正在尝试以下操作 我有两个 calsess Server py and Client py我想将服务器目录中存在的所有文件发送到客户端的某个目录 IE C ServerDir file1 txt C Server
  • 对于 `mouseMoveEvent()` 来说鼠标移动太快

    以下是 Python 3 版本 UI XML 代码显示 4QProgessBar对于每个鼠标方向 标记为 X X Y Y 快速移动鼠标 以圆圈形式 将使 4QProgessBar上升到 99 然后是一些QProgessBar休息一下 直到鼠
  • 如何在 Heroku 中安装 NLTK 模块

    嘿 我想在我的 Heroku 服务器上安装 NLTK pos tag 我该怎么办呢 请给我一些步骤 因为我是 Heroku 服务器系统的新手 我刚刚添加了官方nltk支持构建包 只需添加一个nltk txt文件包含要安装的语料库列表 一切都
  • Python bash 管道

    我想将 python 脚本的输出通过管道传输到 bash 脚本 到目前为止我所做的是尝试使用os popen sys subprocess 并试图给出一个管道的例子 os popen echo P 1 1 591336 4927369 1
  • Python Ctypes:将返回的 C 数组转换为 python 列表,无需 numpy

    我正在使用 Python Ctypes 来访问一些 C 库 我连接到的函数之一返回const double 它实际上是一个双精度数组 当我在Python中得到结果时 如何将该数组转换为Python列表 C函数的签名 const double
  • Python 中的参数命名约定

    对于形式参数密切相关的函数 例如 def add two numbers n1 n2 return n1 n2 def multiply two numbers n1 n2 return n1 n2 如上所示 为两个函数中的参数指定相同的名
  • Python:并行修改数组的简单方法

    这个问题可能听起来很简单 但作为 Python 并行化的新手 我肯定会遇到困难 我处理了 OpenMP for C 中的并行化问题 这要容易得多 我需要做的是并行修改矩阵的条目 就是这样 问题是 我无法使用简单的 joblib 库来做到这一
  • 具有动态特性的 Python 嵌套作用域

    需要帮助理解以下句子PEP 227 http www python org dev peps pep 0227 和Python 语言参考 http docs python org reference executionmodel html
  • TensorFlow 运算符重载

    有什么区别 tf add x y and x y 在 TensorFlow 中 当您使用以下命令构建图表时 您的计算图表会有什么不同 代替tf add 更一般地说 有 或者其他张量超载的操作 如果至少有一个x or y is a tf Te
  • 匹配字典集。最优雅的解决方案。 Python

    给定两个字典列表 新的和旧的 字典在两个列表中表示相同的对象 我需要找到差异并生成新的字典列表 其中仅包含新字典中的对象和旧字典中的更新属性 例子 list new id 1 name bob desc cool guy id 2 name
  • 优化 Django Queryset for 循环

    如何优化以下查询集 link goal for link in self child links all 我想摆脱 for 循环并只访问数据库一次 我有以下代码 class Goal models Model name models Cha
  • 如何使用包含 \n 的 .txt 创建一维列表?

    我想读取一个文本文件并将文件的每个元素放入一个列表中 而不是为文件中的每一行都有一个单独的列表 例如 如果文件是 你好我的名字 Is Joe 我希望列表是 你好 我的名字是 Joe 而不是 你好 我的名字 是乔 这是我到目前为止所拥有的 d
  • 如何通过检查传递给 pytest_runtest_teardown 的 Item 对象来确定测试是否通过或失败?

    Pytest 允许您通过实现一个名为的函数来进入每个测试的拆卸阶段pytest runtest teardown在插件中 def pytest runtest teardown item nextitem pass 是否有一个属性或方法it
  • Django 模型表单中的必填字段

    我有一个表格 当我也不想要它们时 会根据需要显示几个字段 这是来自 models py 的表格 class CircuitForm ModelForm class Meta model Circuit exclude lastPaged d
  • pytest 看不到正在测试的函数的日志

    我有一个像这样的烧瓶应用程序 from flask import Flask import logging app Flask name app route def catch all logging warning I m a warni
  • Python Pandas 系列失败日期时间

    我认为这一定是 pandas 的失败 有一个 pandas 系列 v 18 1 和 19 如果我为该系列分配一个日期 第一次将其添加为 int 错误 第二次将其添加为 int 错误 添加为日期时间 正确 我无法理解原因 例如使用以下代码 i
  • Python代码检测OS X El Capitan中的暗模式以更改状态栏菜单图标

    我有目标 C 代码来检测暗模式以更改状态栏 NSDistributedNotificationCenter defaultCenter addObserver self selector selector darkModeChanged n
  • Django - 以表单形式访问 request.session

    我按如下方式调用表单 然后将其传递给模板 f UserProfileConfig request 我需要能够访问表单中的 request session 所以首先我尝试了这个 class UserProfileConfig forms Fo
  • 使用和不使用 SciPy 计算 k 组合的数量

    我对这个函数感到困惑combSciPy 的 http docs scipy org doc scipy 0 14 0 reference generated scipy misc comb html看起来比简单的 Python 实现要慢 这

随机推荐

  • react-redux@7.1用于hooks的API

    React redux 7 1发版啦 因为在新的项目中用到了hooks 但是用的时候react redux还处于alpha x版本的状态 用不了最新的API 感觉不是很美妙 好在 这两天发布了7 1版本 现在来看看怎么用这个新的API us
  • BES2300x笔记(2) -- 如何区分左右耳

    哈喽大家好 这是该系列博文的第二篇 篇 lt lt 系列博文索引 快速通道 gt gt 一 前言 我们知道 TWS耳机有左耳和右耳两种角色 因此可以被定义不同的UI交互功能 常见的 区分左右耳的方法有硬件IO区分和软件蓝牙地址奇偶区分 比如
  • 【毕业设计】深度学习车辆颜色识别检测系统 - python opencv YOLOv5

    文章目录 1 前言 2 实现效果 3 CNN卷积神经网络 4 Yolov5 5 数据集处理及模型训练 6 最后 1 前言 Hi 大家好 这里是丹成学长的毕设系列文章 对毕设有任何疑问都可以问学长哦 这两年开始 各个学校对毕设的要求越来越高
  • Redis系列之客户端Redisson

    概述 官方推荐的客户端 支持Redis单实例 Redis哨兵 Redis Cluster Redis master slave等各种部署架构 GitHub 功能 分布式锁 分布式锁 使用Redisson提供的分布式锁的一个最常见场景 应用部
  • TCP/UDP/ARP/DNS/HTTP/帧的包头解析(保姆级分析)

    各种包的分析总结 TCP包的分析 包括使用wireshark进行抓包的分析 第一行 2个字节表示源端口 2个字节表示目的端口 0 65535 第二行 序列号 保证数据的顺序 第三行 确认序号 确保自己已经收到了 第四行 首部长度 数据偏移
  • Jdbc的简单封装

    由于操作Jdbc的代码重复度过高 所以抽取Jdbc工具类 JDBCUtils 目的 简化后期的操作 分析 1 抽取方法获取注册和连接对象 需求 不想传递参数 麻烦 还得保证工具类的通用性 解决方案 配置文件 通过定义一个jdbc prope
  • 虚拟机VMware 配置win7 安装

    1 首先需要下载一个VMware 2 接着下载一个Windows7的镜像系统 下载地址 MSDN 我告诉你 做一个安静的工具站 我的MSDN MSDN原版系统 MSDN镜像 MSDN ISO下载 3 这个好了之后就可以去这个网址下看安装教程
  • Python

    目录 1 以特殊格式处理连续增加的数字 排序 选项代码 2 正则表达式匹配 递归 字符串 示例 1 示例 2 示例 3 示例 4 示例 5 提示 选项代码 3 地下城游戏 数组 动态规划 选项代码 有调整 补充测试代码 1 以特殊格式处理连
  • MySQL创建用户与授权(转)

    一 创建用户 命令 CREATE USER username host IDENTIFIED BY password 说明 username 你将创建的用户名 host 指定该用户在哪个主机上可以登陆 如果是本地用户可用localhost
  • LINUX学习------Linux自动化运维——Docker容器

    Docker介绍 Docker 是一个开源的应用容器引擎 基于 Go 语言 并遵从 Apache2 0 协议开源 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级 可移植的容器中 然后发布到任何流行的 Linux 机器上 也可
  • AIX7.2系统安装openssh7.5

    目录 前言 备份当前版本的ssh文件 创建openssh安装包目录 进入目录解压 开始安装 前言 最开始对服务器做过一次安全检查 查出openssh的scp存在高危漏洞 于是就把包含scp服务的openssh client卸载了 后来再做安
  • VSCode 的 C/C++ 调试环境的 launch.json、 tasks.json 文件

    launch json Configuring tasks json for C C debugging author huihut repo https gist github com huihut 9548fe7e1084cf8e844
  • 在Bottle框架中返回静态文件和JSON对象的方法

    Bottle是一个轻量级的Python Web框架 提供了简单而灵活的方式来构建Web应用程序 在Bottle框架中 我们可以使用以下方法来返回静态文件和JSON对象 返回静态文件 要返回静态文件 我们可以使用static file函数 该
  • 交叉编译-18:解决arm-none-eabi-gcc交叉编译问题

    在项目中使用arm none eabi gcc交叉编译链编译程序时报错 checking host system type arm none eabi checking for a BSD compatible install usr bi
  • Docker进阶学习:其他命令以及扩展

    Docker Stack docker compose 单机部署项目 docker stack 集群部署 单机 docker compose up d wordpress yaml 集群 docker stack deploy wordpr
  • sqlserver 2012中实现字符串连接的新方法

    sqlserver 2012之前的版本 处理not null字符 DECLARE t1 varchar 10 a DECLARE t2 varchar 10 b DECLARE t3 varchar 10 c DECLARE t4 varc
  • 在线json解析工具 在线js解析加密混合工具

    https www sojson com json解析工具 js工具 https www jsjiami com tool
  • 风车IM即时通讯聊天系统源码_聊天APP_附APP_带安装教程

    风车IM即时通讯聊天系统源码 聊天APP 附APP 带安装教程 风车im 是一款独立服务器部署的即时通讯解决方案 可以帮助你快速拥有一套自己的移动社交 企业办公 多功能业务产品 独立部署 加密通道 牢牢掌握通讯信息 前端开发语言 VUE 安
  • kafka集群部署(最新版本kafka_2.13-3.1.0)

    集群环境 节点名 ip地址 OS版本 部署服务 broker信息 kafka01 192 168 96 10 CentOS Linux release 7 9 2009 Core jdk zookeeper kafka broker 0 k
  • Python字典及基本操作(超级详细)

    字典也是 Python 提供的一种常用的数据结构 它用于存放具有映射关系的数据 比如有份成绩表数据 语文 79 数学 80 英语 92 这组数据看上去像两个列表 但这两个列表的元素之间有一定的关联关系 如果单纯使用两个列表来保存这组数据 则