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.mzph.cn/news/755154.shtml

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

相关文章

【Python循环4/5】跳出循环的办法

目录 导入 break 具体用法 在for循环中的运用 在while循环中的运用 continue 具体用法 区别 总结 导入 前几天的博文里&#xff0c;我们学习了for循环和while循环。 无论是for循环还是while循环&#xff0c;默认的终止条件都是边界条件。在触发边界条件之前&am…

生成微信小程序二维码

首页 -> 统计 可以通过上面二个地方配置&#xff0c;生成小程序的二维码&#xff0c;并且在推广分析里&#xff0c;有详细的分析数据&#xff0c;

国务院大动作!2024年深入推广「项目管理国标」,行业将迎新风向!

职场竞争激烈&#xff0c;项目管理专业人才在各个行业中的作用越来越凸显出来。在23年之前&#xff0c;我国关于通用项目管理人才的培养更多依赖于国外的PMP认证&#xff0c;缺少自主的认证评价标准和体系。 为了弥补这一空缺&#xff0c;基于国内的项目管理发展需求&#xff…

基于单片机的智能台灯设计1.42

摘 要 社会在发展&#xff0c;时代在进步&#xff0c;人们对生活质量需求更加膨胀&#xff0c;是否拥有高科技技术也最终决定着产品是否可以满足人们的欲望&#xff0c;只有性价比更高&#xff0c;才可以得到更好的青睐。现在的电子产品愈来愈多&#xff0c;龙蛇混杂&#xff…

2.1(TCP)

TCP—传输控制协议 是一种面向连接的可靠传输协议。可靠、有序、无丢弃和不重复。 特点&#xff1a; TCP是面向连接&#xff08;虚连接&#xff09;的传输层协议每一条TCP连接有且只能有两个端点。可靠、有序、无丢弃和不重复。TCP协议提供全双工通讯。 发送缓存 存放发送方…

达科为生物领航,国产高端试剂“达优®”蓄势待发

在生物科技领域&#xff0c;每一次技术的突破都意味着行业前进的一大步。在即将盛大开幕的双博会上&#xff0c;深圳市达科为生物工程有限公司将携其国产高端试剂品牌“达优”闪亮登场&#xff0c;向世界展示中国生物科技的最新成果。而在这背后&#xff0c;是达科为生物多年来…

Docker【docker使用】

文章目录 前言一、概念二、常用方法1.镜像2.容器 三、镜像与镜像的关系&#xff0c;以及镜像构建和管理 前言 上一篇文章讲了docker的安装&#xff0c;本片文章我们来聊聊docker的一些常用操作。以及镜像、容器之间的关系 一、概念 docker三大核心概念&#xff1a;镜像 Imag…

力扣大厂热门面试算法题 43-45

43. 字符串相乘&#xff0c;44. 通配符匹配&#xff0c;45. 跳跃游戏 II&#xff0c;每题做详细思路梳理&#xff0c;配套Python&Java双语代码&#xff0c; 2024.03.18 可通过leetcode所有测试用例。 目录 43. 字符串相乘 解题思路 完整代码 Python Java 44. 通配符…

基于Spring Boot的中医学习服务管理系统

摘 要 随着世界经济信息化、全球化的到来和互联网的飞速发展&#xff0c;推动了各行业的改革。若想达到安全&#xff0c;快捷的目的&#xff0c;就需要拥有信息化的组织和管理模式&#xff0c;建立一套合理、动态的、交互友好的、高效的中医学习服务管理系统。当前的信息管理存…

汽车制造业供应商管理会面临哪些问题?要如何解决?

汽车行业的供应链是及其复杂的&#xff0c;并且呈全球化分布&#xff0c;企业在知识产权方面的优势很可能是阶段性的。企业需要持续保持领先&#xff0c;将面临巨大的挑战&#xff0c;尽快地将产品推向市场是保持领先的唯一途径。然而&#xff0c;如果没有正确的方式去实现安全…

matlab 最小二乘拟合圆柱

目录 一、算法原理1、算法简介2、参考文献二、代码实现三、结果展示四、测试数据本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法原理 1、算法简介 圆柱拟合步骤主要包括两步: 一是确定柱面模型参数初始值; 二是…

线性电压调节器的使用---MC7915BTG

MC7915BTG是一款固定输出负线性电压调节器。还提供了MECL系统中常用的一种额外电压选项。MC7915BTG线性电压调节器15V的固定输出电压&#xff0c;采用限流、热关闭和安全区域补偿&#xff0c;使其在大多数操作条件下都非常坚固。有了足够的散热&#xff0c;它们可以提供超过1.0…

关系数据库标准语言SQL

1.SQL概述 1.1基本表&#xff08;Base table&#xff09; 实际存储在数据库中的表SQL中一个关系就对应一个基本表基本表可以有若干个索引基本表的集合组成关系模式&#xff0c;即全局概念模式&#xff08;数据的整体逻辑结构&#xff09; 1.2 存储文件 存储文件和相关索引组…

LeetCode 热题 100 | 回溯(三)

目录 1 131. 分割回文串 2 51. N 皇后 菜鸟做题&#xff0c;语言是 C&#xff0c;感冒好了 ver. 1 131. 分割回文串 题眼&#xff1a;给你一个字符串 s&#xff0c;请你将 s 分割 成一些子串。 根据题眼可知&#xff0c;我们需要做的是将字符串 s 连续分割 为几段&#…

二、C#选择排序算法

简介 选择排序算法的基本思想是每一次从待排序的数据元素中选出最小&#xff08;或最大&#xff09;的一个元素&#xff0c;存放在序列的起始位置&#xff0c;然后&#xff0c;再从剩余未排序元素中继续寻找最小&#xff08;大&#xff09;元素&#xff0c;然后放到已排序序列…

Redis各场景应用集合

应用场景 1、缓存&#xff08;Cache&#xff09;,分布式缓存 有一些存储于数据库中的数据会被频繁访问&#xff0c;如果频繁的访问数据库&#xff0c;数据库负载会升高&#xff0c;同时由于数据库IO比较慢&#xff0c;应用程序的响应会比较差。此时&#xff0c;如果引入Redis来…

面试笔记——Redis(使用场景、面临问题、缓存穿透)

Redis的使用场景 Redis&#xff08;Remote Dictionary Server&#xff09;是一个内存数据结构存储系统&#xff0c;它以快速、高效的特性闻名&#xff0c;并且它支持多种数据结构&#xff0c;包括字符串、哈希表、列表、集合、有序集合等。它主要用于以下场景&#xff1a; 缓…

java新手练习-类的继承调用(接口,抽象类,构造函数)和枚举定义方法

1.继承 父类可以调用子类实例对象,(对于调用抽象类必须使用继承) 模版 //抽象定义一个父类抽象类 abstract class FatherAbstract{void showFatherAbstract(String color, String name, int age, double serail_abstract){System.out.println("color " color &…

Java基础-lambda表达式

lambda表达式 前言前置知识λ小故事函数式编程起源: λ演算法 概念Lambda && 匿名类无参类型的简写带参函数的简写 简写的依据自定义函数接口lambda && 匿名类JVM层面区别匿名内部类实现Lambda表达式实现推论,this引用的意义 lambda && 集合Collection…

代码随想录阅读笔记-字符串【右旋字符串】

题目 字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k&#xff0c;请编写一个函数&#xff0c;将字符串中的后面 k 个字符移到字符串的前面&#xff0c;实现字符串的右旋转操作。 例如&#xff0c;对于输入字符串 "a…