【python】python中字典的用法记录
文章目录
- 序言
- 1. 字典的创建和访问
- 2. 字典如何添加元素
- 3. 字典作为函数参数
- 4. 字典排序
序言
- 总结字典的一些常见用法
1. 字典的创建和访问
-
字典是一种可变容器类型,可以存储任意类型对象
-
key : value,其中value可以是任何数据类型,key必须是不可变的如字符串、数字、元组,不可以用列表
-
key是唯一的,如果出现两次,后一个值会被记住
-
字典的创建
-
创建空字典
dictionary = {}
-
直接赋值创建字典
dictionary = {'name' : 'Nick', 'age' : 20, 'height' : 175}
-
通过关键字dict和关键字参数创建字典
dictionary = dict(name='Nick', age=20, height=175)
dictionary = dict() for i in range(1, 5):dictionary[i] = i * i print(dictionary) # 输出结果:{1: 1, 2: 4, 3: 9, 4: 16}
-
通过关键字dict和二元组列表创建
my_list = [('name', 'Nick'), ('age', 20), ('height', 175)] dictionary = dict(my_list)
-
通过关键字dict和zip创建
dictionary = dict(zip('abc', [1, 2, 3])) print(dictionary) # 输出{'a': 1, 'b': 2, 'c': 3}
-
通过字典推导式创建
dictionary = {i: i ** 2 for i in range(1, 5)} print(dictionary) # 输出{1: 1, 2: 4, 3: 9, 4: 16}
-
通过dict.fromkeys()来创建
dictionary = dict.fromkeys(range(5), 'x') print(dictionary) # 输出{0: 'x', 1: 'x', 2: 'x', 3: 'x'}
这种方法用来初始化字典设置value的默认值
-
-
字典的访问
-
通过键值对访问
dictionary = {'name' : 'Nick', 'age' : 20, 'height' : 175} print(dictionary['age'])
-
通过dict.get(key, default=None)访问:default为可选项,指定key不存在时返回一个默认值,如果不设置默认返回None
dictionary = {'name' : 'Nick', 'age' : 20, 'height' : 175, 2 : 'test'} print(dictionary.get(3, '字典中不存在键为3的元素'))
-
遍历字典的items
dictionary = {'name' : 'Nick', 'age' : 20, 'height' : 175, 2 : 'test'} print('遍历输出item:') for item in dictionary.items():print(item)print('\n遍历输出键值对:') for key, value in dictionary.items():print(key, ' : ', value)
-
遍历字典的keys或values
dictionary = {'name' : 'Nick', 'age' : 20, 'height' : 175, 2 : 'test'}print('遍历keys:') for key in dictionary.keys():print(key)print('\n通过key来访问:') for key in dictionary.keys():print(dictionary[key])print('\n遍历value:') for value in dictionary.values():print(value)
-
遍历嵌套字典
for key, value in dict_2.items():if type(value) is dict: # 通过if语句判断value是不是字典for sub_key, sub_value in value.items():print(sub_key, "→", sub_value)
-
2. 字典如何添加元素
-
使用[]
dictionary = {} dictionary['name'] = 'Nick' dictionary['age'] = 20 dictionary['height'] = 175 print(dictionary)
-
使用update()方法
dictionary = {'name': 'Nick', 'age': 20, 'height': 175} dictionary.update({'age' : 22}) # 已存在,则覆盖key所对应的value dictionary.update({'2' : 'tetst'}) # 不存在,则添加新元素 print(dictionary)
3. 字典作为函数参数
-
字典作为参数传递时:函数内对字典修改,原来的字典也会改变
dictionary = {'name': 'Nick', 'age': 20, 'height': 175} dictionary.update({'age': 22}) # 已存在,则覆盖key所对应的value dictionary.update({'2': 'test'}) # 不存在,则添加新元素 print(dictionary)def dict_fix(arg):arg['age'] = 24dict_fix(dictionary)print(dictionary) # age : 24
-
字典作为可变参数时:函数内对字典修改,不会影响到原来的字典
dictionary = {'name': 'Nick', 'age': 20, 'height': 175} dictionary.update({'age': 22}) # 已存在,则覆盖key所对应的value dictionary.update({'2': 'test'}) # 不存在,则添加新元素 print(dictionary, '\n')def dict_fix(**arg):for key, value in arg.items():print(key, '->', value) # age : 22arg['age'] = 24dict_fix(**dictionary)print('\n', dictionary) # age : 22
-
关于字典作为**可变参数时的key类型说明
dictionary = {} dictionary.update({2: 'test'}) print(dictionary, '\n')def dict_fix(**arg):for key, value in arg.items():print(key, '->', value)arg['age'] = 24dict_fix(**dictionary)
- 报错:TypeError: keywords must be strings,意思是作为**可变参数时,key必须是string类型
- 作为普通参数传递则不存在这个问题
dictionary = {} dictionary.update({2: 'test'}) print(dictionary, '\n')def dict_fix(arg):for key, value in arg.items():print(key, '->', value)arg['2'] = 'new'dict_fix(dictionary)
-
补充一个例子
def function(*a,**b):print(a)print(b) a=3 b=4 function(a, b, m=1, n=2) # (3, 4) {'n': 2, 'm': 1}
- 对于不使用关键字传递的变量,会被作为元组的一部分传递给*a,而使用关键字传递的变量作为字典的一部分传递给了**b
4. 字典排序
-
使用python内置排序函数
sorted(iterable, key=None, reverse=False)
-
iterable:可迭代对象;key:用来比较的元素,取自迭代对象中;reverse:默认False升序, True降序
data = sorted(object.items(), key=lambda x: x[0]) # 使用x[0]的数据进行排序
【参考文章】
字典的创建方式
字典的访问1
字典的访问2
字典中添加元素
字典作为函数参数1
字典通过关键字参数传参
字典作为可变参数时的key取值问题
*参数和** 形参的区别
created by shuaixio, 2023.10.05
相关文章:
【python】python中字典的用法记录
文章目录 序言1. 字典的创建和访问2. 字典如何添加元素3. 字典作为函数参数4. 字典排序 序言 总结字典的一些常见用法 1. 字典的创建和访问 字典是一种可变容器类型,可以存储任意类型对象 key : value,其中value可以是任何数据类型,key必须…...

基于Java的大学生心理咨询系统设计与实现(源码+lw+部署文档+讲解等)
文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…...

Redis-双写一致性
双写一致性 双写一致性解决方案延迟双删(有脏数据的风险)分布式锁(强一致性,性能比较低)异步通知(保证数据的最终一致性,高并发情况下会出现短暂的不一致情况) 双写一致性 当修改了数…...
CustomTkinter:创建现代、可定制的Python UI
文章目录 介绍安装设置外观与主题外观模式主题设置自定义主题颜色窗口缩放CTkFont字体设置CTkImage图片Widgets窗口部件CTk Windows窗口CTk窗口CTkInputDialog对话框CTkToplevel顶级窗口布局pack布局palce布局Grid 网格布局Frames 框架Frames滚动框架...
华为OD机试真题【不含 101 的数】
1、题目描述 【不含 101 的数】 【题目描述】 小明在学习二进制时,发现了一类不含 101的数,也就是: 将数字用二进制表示,不能出现 101 。 现在给定一个整数区间 [l,r] ,请问这个区间包含了多少个不含 101 的数&#…...
Spring IoC和DI详解
IOC思想 IoC( Inversion of Control,控制反转) 不是一门具体技术,而是一种设计思想, 是一种软件设计原则,它将应用程序的控制权(Bean的创建和依赖关系)从应用程序代码中解耦出来&am…...

mysql-binlog
1. 常用的binlog日志操作命令 1. 查看bin-log是否开启 show variables like log_%;2. 查看所有binlog日志列表 show master logs;3.查看master状态 show master status;4. 重置(清空)所有binlog日志 reset master;2. 查看binlog日志内容 1、使用mysqlb…...

通过BeanFactotyPostProcessor动态修改@FeignClient的path
最近项目有个需求,要在启动后,动态修改FeignClient的请求路径,网上找到的基本都是在FeignClient里使用${…},通过配置文件来定义Feign的接口路径,这并不能满足我们的需求 由于某些特殊原因,我们的每个接口…...
数据结构与算法系列-二分查找
二分查找 什么是二分查找? 二分查找是一种针对有序集合,每次将要查找的区间缩小一半,直到找到查找元素,或区间被缩小为0。 如何实现二分查找? 实现有3个注意点: 终止条件是 low < high 2.求中点的算…...
CSS 毛玻璃特效运用目录
主要是记录毛玻璃相关的特效实践案例和实现思路。 章节名称完成度难度文章地址完整代码下载地址Glassmorphism 登录表单完成一般文章链接代码下载Glassmorphism 按钮悬停效果完成一般文章链接代码下载Glassmorphism 计算器完成一般文章链接代码下载Glassmorphism 卡片悬停效果…...

如何在Qt6中引入Network模块
2023年10月1日,周日凌晨 2023年10月2日,周一下午 第一次更新 目录 如果用的是CMakeQt Console ApplicationQt Widgets Application如果用的是qmake 如果用的是CMake find_package(Qt6 COMPONENTS Network REQUIRED) target_link_libraries(mytarget…...

2023/10/4 QT实现TCP服务器客户端搭建
服务器端: 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> #include <QTcpSocket> #include <QList> #include <QMessageBox> #include <QDebug>QT_BEGIN_NAMESPACE namespace Ui { cla…...

云原生边缘计算KubeEdge安装配置
1. K8S集群部署,可以参考如下博客 请安装k8s集群,centos安装k8s集群 请安装k8s集群,ubuntu安装k8s集群 2.安装kubEedge 2.1 编辑kube-proxy使用ipvs代理 kubectl edit configmaps kube-proxy -n kube-system #修改kube-proxy#大约在40多行…...

【LeetCode热题100】--35.搜索插入位置
35.搜索插入位置 使用二分查找: class Solution {public int searchInsert(int[] nums, int target) {int low 0,high nums.length -1;while(low < high){//注意每次循环完都要计算midint mid (low high)/2;if(nums[mid] target){return mid;}if(nums[mid]…...

mysql面试题13:MySQL中什么是异步复制?底层实现?
该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:讲一讲mysql中什么是异步复制?底层实现? MySQL中的异步复制(Asynchronous Replication)是一种复制模式,主服务器将数据写入二进制日志后,无…...

SpringBoot-Shiro安全权限框架
Apache Shiro是一个强大而灵活的开源安全框架,它干净利落地处理身份认证,授权,企业会话管理和加密。 官网: http://shiro.apache.org/ 源码: https://github.com/apache/shiro Subject:代表当前用户或…...
PostgreSQL基础语法
当谈到关系型数据库管理系统(RDBMS)时,PostgreSQL是一个备受推崇的选择。它是一个开源的、强大的RDBMS,具有广泛的功能和支持。本文将介绍一些PostgreSQL的基础语法,以帮助您入门。 1. 安装和配置 在开始使用PostgreS…...
编程前置:处理Excel表格,定位单元格位置,输入文字前,让AI机器人知道我说什么
原提问: input输入表头 (input内除了/,空格 回车 标点符号等 全部作为单元格分隔符) 由我设置input输入的是行or列 给选项 1. 行 2. 列 默认回车或没输入值是列由我设置起始位置行列 例如 3,2 表示3行2列 当我输入3,2 就表示在第…...

Linux基本指令介绍系列第四篇
文章目录 前言一、Linux基本指令介绍1、more指令2、less指令3、head指令4、tail指令5、bc指令6、管道文件介绍7、与时间相关的指令 总结 前言 本文介绍Linux使用时的部分指令,读者如果想了解更多基本指令的使用,可以关注博主的后续的文章。 博主使用的实…...
读取vivo手机截图尺寸移动.jpg等文件
这个代码的设计初衷是为了解决图片处理过程中的一些痛点。想象一下,我们都曾遇到过这样的情况:相机拍摄出来的照片、网络下载的图片,尺寸五花八门,大小不一。而我们又渴望将它们整理成一套拥有统一尺寸的图片,让它们更…...

业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...

java高级——高阶函数、如何定义一个函数式接口类似stream流的filter
java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用(Math::max) 2 函数接口…...

Java数组Arrays操作全攻略
Arrays类的概述 Java中的Arrays类位于java.util包中,提供了一系列静态方法用于操作数组(如排序、搜索、填充、比较等)。这些方法适用于基本类型数组和对象数组。 常用成员方法及代码示例 排序(sort) 对数组进行升序…...

数据分析六部曲?
引言 上一章我们说到了数据分析六部曲,何谓六部曲呢? 其实啊,数据分析没那么难,只要掌握了下面这六个步骤,也就是数据分析六部曲,就算你是个啥都不懂的小白,也能慢慢上手做数据分析啦。 第一…...

未授权访问事件频发,我们应当如何应对?
在当下,数据已成为企业和组织的核心资产,是推动业务发展、决策制定以及创新的关键驱动力。然而,未授权访问这一隐匿的安全威胁,正如同高悬的达摩克利斯之剑,时刻威胁着数据的安全,一旦触发,便可…...

【技巧】dify前端源代码修改第一弹-增加tab页
回到目录 【技巧】dify前端源代码修改第一弹-增加tab页 尝试修改dify的前端源代码,在知识库增加一个tab页"HELLO WORLD",完成后的效果如下 [gif01] 1. 前端代码进入调试模式 参考 【部署】win10的wsl环境下启动dify的web前端服务 启动调试…...
使用python进行图像处理—图像滤波(5)
图像滤波是图像处理中最基本和最重要的操作之一。它的目的是在空间域上修改图像的像素值,以达到平滑(去噪)、锐化、边缘检测等效果。滤波通常通过卷积操作实现。 5.1卷积(Convolution)原理 卷积是滤波的核心。它是一种数学运算,…...