Python——字典

一、字典特性介绍

        字典在 Python 中极为重要,是属于映射类型的数据结构。 字典有⼀对⼉⼤括号组成 {} , 字典内的元素都是成对⼉出现的 {"a":1} , 他们⽤英⽂的冒号( : )隔开, 左边叫做键(key),右边的叫值(value), 通常叫做键值对⼉。 每个元素⽤英⽂的逗号 ( , ) 隔开{"a": 1, "b": 2}

二、创建字典

        创建字典可以使⽤⼀对⼉⼤括号, 也可以使⽤ dict()

In [1]: d1 = {}In [2]: type(d1)
Out[2]: dictIn [3]: d2 = dict()In [4]: type(d2)
Out[4]: dict

 

三、字典的 key 和 value 

        1、字典的 key

                在⼀个字典中,key 不允许有重复

In [5]: {"a":1,"a":10}
Out[5]: {'a': 10}

                且必须是 python 中不可变的数据类型 如: 整型 浮点型 布尔值字符串 元组

In [6]: {1: "整型", 1.1: "浮点型", False: "布尔值", "abc":"字符串", (1,2): "...: 元组" }
Out[6]: {1: '整型', 1.1: '浮点型', False: '布尔值', 'abc': '字符串', (1, 2): '元组'}

                最常⽤的是字符串,因为⽐较容易有语意,易读

In [7]:  {"user": "shark", "age": 18}
Out[7]: {'user': 'shark', 'age': 18}

        扩展:python 中认为 1 和 True , 0 和 False 的值是相等的 但不是⼀个对象,因为它们的 id 不同

In [8]: {1: "整型", True: "布尔型"}
Out[8]: {1: '布尔型'}In [9]: {True: "布尔型", 1: "整型"}
Out[9]: {True: '整型'}

 

        2、字典中的 value 

                字典中的 value 可以是 Python 中任意的⼀个数据对象:整型、浮点型、布尔值、字符串、列表、元组、字典、函数对象等

In [10]: {'port': 3306, "height": 1.81, 'stat': True,"name": "dbserver"}
Out[10]: {'port': 3306, 'height': 1.81, 'stat': True, 'name': 'dbserver'}In [11]: {"mysql-01": {...:     "cpu":4,...:     "memroy":[4066,4096]...:     }...: }
Out[11]: {'mysql-01': {'cpu': 4, 'memroy': [4066, 4096]}}

 

        函数对象

In [12]: def foo():...:     print("hello")...: In [13]: {"1":foo}
Out[13]: {'1': <function __main__.foo()>}

 

四、获取字典中 key 和 value 

        1、检查字典中是否存在某个 key

                可以使⽤ in 关键字

In [14]: dic_map = {...:     "Manufacturer": "manufacturer",...:     "Product Name": "pod_name",...:     "Serial Number": "sn"...: }In [15]: dic_map
Out[15]: 
{'Manufacturer': 'manufacturer','Product Name': 'pod_name','Serial Number': 'sn'}In [16]: "Manufacturer" in dic_map
Out[16]: TrueIn [17]: "Manufactur" in dic_map
Out[17]: FalseIn [18]: line = '\tManufacturer: Alibaba Cloud'In [19]: line.strip().split(': ')
Out[19]: ['Manufacturer', 'Alibaba Cloud']In [20]: k = line.strip().split(': ')[0]In [21]: k in dic_map
Out[21]: True

 

        2、使⽤ [] 获取指定 key 的 value 

In [22]: dic_map['Manufacturer']
Out[22]: 'manufacturer'

                这种⽅式是⾮常的⾼效做法,推荐使⽤。 但是有个问题,假设获取字典中不存在的 key 的值

        3、使⽤字典的 get() ⽅法

In [27]: dic_map.get('Manufacturer')
Out[27]: 'manufacturer'In [28]: v = dic_map.get('Manufacturer')In [29]: v
Out[29]: 'manufacturer'In [30]: v = dic_map.get('Manufacturerr')In [31]: vIn [32]: type(v)        # key 不存在字典中,则返回 None
Out[32]: NoneTypeIn [33]: v = dic_map.get('Manufacturerr', 'key not in')    # key 不存在,返回自定义值In [34]: v
Out[34]: 'key not in'

 

        4、循环字典的 key 和 value 

                字典对象的 items() ⽅法会获取到字典的 key 和 value, 它是⼀个可迭代对象

In [9]: for i in dic_map.items():...:     print(i)...: 
('Manufacturer', 'manufacturer')
('Product Name', 'pod_name')
('Serial Number', 'sn')In [10]: for i in dic_map.items():...:     k, v = i...:     print(k , v)...: 
Manufacturer manufacturer
Product Name pod_name
Serial Number sn

 

        5、向字典中添加键值对 

                方式一:[] 

In [12]: info = {}In [13]: info["cpu"] = 4In [14]: info["memory"] = [4096,4096]In [15]: info
Out[15]: {'cpu': 4, 'memory': [4096, 4096]}

                        字段映射

In [16]: dic_map
Out[16]: 
{'Manufacturer': 'manufacturer','Product Name': 'pod_name','Serial Number': 'sn'}In [17]: li = ['Manufacturer: Alibaba Cloud',...:     'Product Name: Alibaba Cloud ECS',...:     'Version: pc-i440fx-2.1',...:     'Serial Number: 0f7e3d86-7742-4612-9f93-e3a9e4754157']In [18]: prod_info = {}In [19]: for line in li:...:     print(line)...: 
Manufacturer: Alibaba Cloud
Product Name: Alibaba Cloud ECS
Version: pc-i440fx-2.1
Serial Number: 0f7e3d86-7742-4612-9f93-e3a9e4754157In [20]: for line in li:...:    print( line.split(': '))...: 
['Manufacturer', 'Alibaba Cloud']
['Product Name', 'Alibaba Cloud ECS']
['Version', 'pc-i440fx-2.1']
['Serial Number', '0f7e3d86-7742-4612-9f93-e3a9e4754157']In [22]: for line in li:...:    k, v = line.split(': ')...:    if k in dic_map:...:        new_k = dic_map[k]...:        print(new_k,v)...: 
manufacturer Alibaba Cloud
pod_name Alibaba Cloud ECS
sn 0f7e3d86-7742-4612-9f93-e3a9e4754157In [23]: for line in li:...:    k, v = line.split(': ')...:    if k in dic_map:...:        new_k = dic_map[k]...:        prod_info[new_k] = v        # 获取的⼀个字典的值作为另⼀个字典的键...: In [24]: prod_info
Out[24]: 
{'manufacturer': 'Alibaba Cloud','pod_name': 'Alibaba Cloud ECS','sn': '0f7e3d86-7742-4612-9f93-e3a9e4754157'}

 

 

                方式二:update 

In [25]: disk = {"disk": [10240]}In [26]: info = {}In [27]: info.update(disk)In [28]: info
Out[28]: {'disk': [10240]}In [29]: info.update({'cpu':4})In [30]: info
Out[30]: {'disk': [10240], 'cpu': 4}In [31]: info['disk']
Out[31]: [10240]In [32]: info['disk'][0]
Out[32]: 10240

 

 

        6、字典的编程之道:⽤字典实现 case 语句 

In [45]: !vi some.py     #程序
data = {                   "0": "zero","1": "one","2": "two","q": "quit"
}while True:arg = input(">>:")v = data.get(arg, "nothing")if v == "quit":breakprint(v)In [46]: %run some.py    #执⾏程序
>>:1
one
>>:2
two
>>:3
nothing
>>:4
nothing
>>:q

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/278456.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式深度解析:工厂方法模式与抽象工厂模式的深度对比

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 设计模式深度解析&#xff1a;工厂方法模式与抽象工厂模式的深度对比 探索设计模式的魅力&#x…

Redis 八种常用数据类型详解

夯实基础&#xff0c;这篇文章带着大家回顾一下 Redis 中的 8 种常用数据类型&#xff1a; 5 种基础数据类型&#xff1a;String&#xff08;字符串&#xff09;、List&#xff08;列表&#xff09;、Set&#xff08;集合&#xff09;、Hash&#xff08;散列&#xff09;、Zse…

Vue.js+SpringBoot开发食品生产管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 加工厂管理模块2.2 客户管理模块2.3 食品管理模块2.4 生产销售订单管理模块2.5 系统管理模块2.6 其他管理模块 三、系统展示四、核心代码4.1 查询食品4.2 查询加工厂4.3 新增生产订单4.4 新增销售订单4.5 查询客户 五、…

rocky9 编写一键安装mysql 的sh脚本

基本操作步骤 1、虚拟机最小化安装rocky9系统&#xff0c;安装后克隆一个系统&#xff1b;1个用来获取下载的rpm包&#xff0c;一个用来编写sh 测试脚本&#xff1b; 2、修改虚拟机的 yum配置文件&#xff0c;获取获取rpm程序 &#xff1a;启用缓存&#xff0c;并修改yum下载…

在Latex中优雅的插入svg图片(Ubuntu22.04)

文章目录 一、前言二、准备工作三、脚本编程四、结论 一、前言 在 LaTeX \LaTeX LATE​X 中&#xff0c;插入图片常用的为 figure 环境加 \includegraphics 命令&#xff1a; \begin{figure}[!htbp]\centering\includegraphics[width\textwidth]{图片名.jpg/jpeg/png/pdf}\c…

【LeetCode热题100】 226. 翻转二叉树(二叉树)

一.题目要求 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 二.题目难度 简单 三.输入样例 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1] 示例 2&#xff1a; 输入&#xff1a;…

文件处理(二)

CSV文件的读取和写入 CSV文件的操作 csv是逗号分隔符文本格式&#xff0c;常用于数据交换、Excel文件和数据库数据的导入和导出。 与Excel文件不同&#xff0c;CSV文件中&#xff1a; 值没有类型&#xff0c;所有值都是字符串不能指定字体颜色等样式不能指定单元格的宽高&…

【自动驾驶可视化工具】

自动驾驶可视化工具 自动驾驶可视化工具1.百度Apollo的Dreamview:2.Cruise的Worldview:3.Uber的AVS:4.Fglovex Studio: 自动驾驶可视化工具 介绍一下当前主流的自动驾驶可视化工具。 1.百度Apollo的Dreamview: Dreamview是百度Apollo平台开发的一种可视化工具&#xff0c;用…

滑块验证码

1.这里针对滑块验证给了一个封装的组件verifition&#xff0c;使用直接可以调用 2.组件目录 3.每个文件的内容 3.1 Api文件中只有一个index.js文件&#xff0c;用来存放获取滑块和校验滑块结果的api import request from /router/axios//获取验证图片 export function reqGe…

centos7.9的GUI桌面样式不符合默认熟悉的操作习惯

一、问题描述&#xff1a; 原因&#xff1a;桌面样式选错了。 二、解决&#xff1a; 1.先登进去LogOut。 2.点击设置的工具图标中的GNOME Classic即可恢复成默认操作习惯的桌面样式。 3.恢复到默认熟悉的操作界面

(一)Neo4j下载安装以及初次使用

&#xff08;一&#xff09;下载 官网地址&#xff1a;Neo4j Graph Database & AnamConnect data as its stored with Neo4j. Perform powerful, complex queries at scale and speed with our graph data platform.https://neo4j.com/ &#xff08;二&#xff09;安装并配…

系统明天上线,PG表空间还不规划好疯狂给同事埋雷

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

天眼销批量查询功能上线

天眼销是一款提供企业线索的产品&#xff0c;致力于帮助客户获取最新的企业联系方式、工商信息等关键数据。 数据库收录全国 3.3亿及以上企业(含个体)线索&#xff0c;涵盖企业名称、企业状态、注册时间、注册资本、经营范围、法人信息、联系方式等维度&#xff0c;为用户提供…

【python开发】并发编程(上)

并发编程&#xff08;上&#xff09; 一、进程和线程&#xff08;一&#xff09;多线程&#xff08;二&#xff09;多进程&#xff08;三&#xff09;GIL锁 二、多线程开发&#xff08;一&#xff09;t.start()&#xff08;二&#xff09;t.join()&#xff08;三&#xff09;t.…

数据的响应式:实现动态数据驱动的技巧

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:StepperItem)

用作Stepper组件的页面子组件。 说明&#xff1a; 该组件从API Version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 支持单个子组件。 接口 StepperItem() 属性 参数名参数类型参数描述prevLabelstring设置左侧文本按钮内…

upload文件上传漏洞复现

什么是文件上传漏洞&#xff1a; 文件上传漏洞是指由于程序员在对用户文件上传部分的控制不足或者处理缺陷&#xff0c;而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。这里上传的文件可以是木马&#xff0c;病毒&#xff0c;恶意脚本或者WebShell等。“…

LeetCode108题:将有序数组转换为二叉搜索树(python3)

一个容易想到的思路&#xff1a;使用 nums 中最靠近中心的位置作为整棵 BST 的根节点&#xff0c;确保左右子树节点数量平衡。随后递归构造 nums 中下标范围为 [0,mid−1]作为左子树&#xff0c;递归构造 nums 中下标范围为 [mid1,n−1]作为右子树。 # Definition for a binar…

理论学习:with torch.no_grad()

如果不加上“with torch.no_grad():”&#xff0c;模型参数会发生改变吗&#xff1f; 如果不使用with torch.no_grad():&#xff0c;在进行模型推理&#xff08;即计算outputs_cls net(inputs[batch_size//2:])这一步&#xff09;时&#xff0c;模型参数不会发生改变&#xf…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Web)中篇

onBeforeUnload onBeforeUnload(callback: (event?: { url: string; message: string; result: JsResult }) > boolean) 刷新或关闭场景下&#xff0c;在即将离开当前页面时触发此回调。刷新或关闭当前页面应先通过点击等方式获取焦点&#xff0c;才会触发此回调。 参数…