Python——字典

一、字典特性介绍

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

二、创建字典

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

In [1]: d1 = {}

In [2]: type(d1)
Out[2]: dict

In [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]: True

In [17]: "Manufactur" in dic_map
Out[17]: False

In [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]: v

In [32]: type(v)        # key 不存在字典中,则返回 None
Out[32]: NoneType

In [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"] = 4

In [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-e3a9e4754157

In [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-e3a9e4754157

In [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":
        break
    print(v)

In [46]: %run some.py    #执⾏程序
>>:1
one
>>:2
two
>>:3
nothing
>>:4
nothing
>>:q

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java项目:62 基于ssm的校园驿站管理系统+jsp

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 管理员管理快递仓库信息&#xff0c;管理待发货信息&#xff0c;管理已收快递&#xff0c;管理物流以及留言信息&#xff0c;管理员工和用户资…

PSCA复位控制集成之复位管理

电源模式转换 进入任何使域中的组件变为非功能性的电源模式的关键要求是确保静止状态。与其他电源域的所有未完成交互&#xff0c;如总线事务&#xff0c;必须已经完成&#xff0c;并且组件必须保持静止状态&#xff0c;而不管其边界的活动如何。 在支持的情况下&#xff0c;…

新克隆的项目对IDEA配置进行哪些配置(超详细)

大家有没有遇到和我一样的这种情况&#xff0c;每次克隆一个新新项目&#xff0c;代码都是飘红&#xff0c;依赖找不到&#xff0c;项目没法运行。然后就是对idea一通设置&#xff0c;我基本都是胡乱搞一通&#xff0c;也不知道哪些设置起作用了&#xff0c;反正是最后搞半天项…

挖到宝了!这些内容管理平台是企业的最佳选择

内容管理系统&#xff0c;不再只是专业人士的语言&#xff0c;而是已经突破到普通人的视野中。简单易懂的解释就是&#xff0c;内容管理平台就像是一个大货仓&#xff0c;你可以在这里存储、整理和搜索你的所有资料。那么今天&#xff0c;我要向你推荐的是三款强大的内容管理平…

macbookpro系统数据清理,2024年有哪些清理MacBook数据恢复

清理MacBook Pro系统数据的方法包括&#xff1a; 优化储存空间。在Mac的系统设置中&#xff0c;可以查看和管理储存空间的使用情况&#xff0c;包括iCloud云盘、照片、音乐、文稿等不同类别的数据。 转移或删除文件。可以将文件移动到外部驱动器或清空“废纸篓”来释放空间&…

JS练习题+对象(函数封装、数组)

function some(ele, arr []) {let flat false;for(let i0;i<arr.length;i){if(ele arr[i]){flat true;break}}return flat;} let re some(荔枝, [苹果, 香蕉, 橘子, 荔枝, 梨子]) console.log(re) // true let re1 some(榴莲, [苹果, 香蕉, 橘子, 荔枝, 梨子]) consol…

Linux——动静态库的制作及使用与动态库原理

目录 一、静态库 1.静态库的制作 2.静态库的使用 加载静态库方法一&#xff1a;安装头文件与库文件 加载静态库方法二&#xff1a;指定文件目录 二、动态库 1.动态库的制作 2.动态库的使用 方法一&#xff1a;安装到系统中 方法二&#xff1a;软链接 方法三&…

GAMES101 学习 2

Lecture 7&#xff1a;Shading 1(lllumination,Shading and Graphics Pipeline) Visibility / occlusion 解决可见性和遮挡的问题 可见性&#xff0c;Z-buffering Z-Buffer 深度缓存 Idea&#xff1a; Store current min. z-value for each sample (pixel)Needs an additi…

EPSON X1G005441020416 TG2016SMN高精度温补晶振

日本爱普生晶振是全球领先的晶振产品生产商,旗下的温补晶振&#xff08;TXCO&#xff09;是EPSON晶振公司产品中的重要产品线之一,其产品一直跟随产品需求变化,不断的更新,EPSON晶体晶振类产品主要包括32.768K时钟晶体MHz无源晶体,有源晶振,温补晶振等产品,且相对于业界同类厂家…

力扣思路题:最长特殊序列1

int findLUSlength(char * a, char * b){int alenstrlen(a),blenstrlen(b);if (strcmp(a,b)0)return -1;return alen>blen?alen:blen; }

Java后端八股----JVM篇

上图中线程1&#xff0c;2如果资源被抢占了&#xff0c;则程序计数器记录一下执行的行号&#xff0c;等到资源就绪后会从记录的行号继续向后执行。 Java8把静态变量以及常量放到了线程的本地内存原空间中(避免放在堆中不可控)。 &#x1f446;图中第二种情况不太容易出现…

如何让图片放大后清晰度不变?

如何让图片放大后清晰度不变&#xff1f;在数字图像处理领域&#xff0c;保持图片放大后清晰度不变是一项具有挑战性的任务。传统的放大方法往往会导致图像模糊、失真&#xff0c;影响观感质量。然而&#xff0c;随着技术的不断进步&#xff0c;现在已经有了一些先进的方法和算…

代码随想录刷题笔记 Day 52 | 打家劫舍 No.198 | 打家劫舍 II No.213 | 打家劫舍III No.337

文章目录 Day 5201. 打家劫舍&#xff08;No. 198&#xff09;<1> 题目<2> 笔记<3> 代码 02. 打家劫舍 II&#xff08;No. 213&#xff09;<1> 题目<2> 笔记<3> 代码 03.打家劫舍III&#xff08;No. 337&#xff09;<1> 题目<2&g…

【GameFramework框架内置模块】8、文件系统(File System)

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 【GameFramework框架】系列教程目录&#xff1a; https://blog.csdn.net/q7…

如何解决网络中IP地址发生冲突故障?

0、前言 本专栏为个人备考软考嵌入式系统设计师的复习笔记&#xff0c;未经本人许可&#xff0c;请勿转载&#xff0c;如发现本笔记内容的错误还望各位不吝赐教&#xff08;笔记内容可能有误怕产生错误引导&#xff09;。 1、个人IP地址冲突解决方案 首先winR&#xff0c;调出…

Centos strema 9 环境部署Glusterfs9

本文档只是创建复制卷&#xff0c;分布式卷&#xff0c;分布式复制卷&#xff0c;纠删卷 操作系统 内核 角色 Ip地址 说明 CentOS Stream 9 x86_64 5.14.0-427.el9.x86_64 客户端 client 192.168.80.119 挂载存储业务机器 CentOS Stream 9 x86_64 5.14.0-427.el9.x8…

Fiddler不仅可以抓包,还可以做接口测试喔

前言 Fiddler最大的优势在于抓包&#xff0c;我们大部分使用的功能也在抓包的功能上&#xff0c;Fiddler做接口测试也是非常方便的。对应没有接口测试文档的时候&#xff0c;可以直接抓完包后&#xff0c;copy请求参数&#xff0c;修改下就可以了。 Composer简介 点开右侧Co…

【推荐系统】NCF神经协同过滤

NCF框架 NCF框架是本文要实现的3个模型的主体结构。 首先是输入层&#xff0c;分别包含两个特征向量 v u v_u vu​和 v i v_i vi​&#xff0c;描述了用户u和物品i。输入仅由一个用户向量和一个物品向量构成&#xff0c;它们分别是以one-hot编码的二值化稀疏向量。 接着是Em…

章节2:单词本该这样记

为什么我们记不住单词&#xff1f; 单词不是被胡编乱造出来的&#xff0c;单词是有规律的&#xff0c;单词是符合人类的逻辑的。 单词实际意思结构意义历史文化 我们要怎么记单词&#xff1f; 掌握单词的结构规律了解与单词有关的历史文化灵活巧计&#xff0c;不要太拘泥于…

MySQL的insert-on-duplicate语句详解

一、insert-on-duplicate语句语法 注意&#xff1a;ON DUPLICATE KEY UPDATE只是 MySQL的特有语法&#xff0c;并不是SQL标准语法&#xff01; INSERT INTO … ON DUPLICATE KEY UPDATE 是 MySQL 中一种用于插入数据并处理重复键冲突的语法。 这个语法适用于在 insert的时候…