【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等文件
这个代码的设计初衷是为了解决图片处理过程中的一些痛点。想象一下,我们都曾遇到过这样的情况:相机拍摄出来的照片、网络下载的图片,尺寸五花八门,大小不一。而我们又渴望将它们整理成一套拥有统一尺寸的图片,让它们更…...
Web前端-Vue2+Vue3基础入门到实战项目-Day2(指令补充, computed计算属性, watch侦听器, 水果购物车)
Web前端-Vue2Vue3基础入门到实战项目-Day2 指令补充指令修饰符v-bind 对样式控制的增强控制class案例 - 京东秒杀tab导航高亮控制style案例 - 控制进度条 v-model 应用于其他表单元素 computed计算属性基本使用computed计算属性 vs methods方法计算属性完整写法案例 - 成绩 wat…...
ffmpeg之去除视频水印
ffmpeg去除水印使用delogo视频滤镜。 delogo参数: x,y,w,h分别表示logo区域的左上角位置及宽度和高度; show:0表示不显示logo区域,1表示显示logo区域。 执行下面的命令: ffmpeg -i 1.mp4 -vf delogox300:y10:w80:h30:show0 out.mp4 效果…...
第二章 线性表
线性表 线性表的基本概念线性表的顺序存储线性表顺序存储的类型定义线性表基本运算在顺序表上的实现顺序表实现算法的分析 线性表的链接存储单链表的类型定义线性表的基本运算在单链表上的实现 其他运算在单链表上的实现建表删除重复结点 其他链表循环链表双向循环链表 顺序实现…...
Java 超高频常见字符操作【建议收藏】
文章目录 前言1. 字符串拼接2. 字符串查找3. 字符串截取4. 字符串替換5. 字符串分割6. 字符串比较7. 字符串格式化8. 字符串空格处理 总结 前言 为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一…...
MongoDB数据库网站网页实例-编程语言Python+Django
程序示例精选 PythonDjangoMongoDB数据库网站网页实例 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《PythonDjangoMongoDB数据库网站网页实例》编写代码,代码整洁,…...
开箱报告,Simulink Toolbox库模块使用指南(七)——S-Fuction Builter模块
S-Fuction Builter S-Fuction Builter模块,Mathworks官方Help对该部分内容的说明如下所示。 DFT算法的原理讲解和模块开发在前几篇文章中已经完成了,本文介绍如何使用S-Fuction Builter模块一步到位地自动开发DFT算法模块,包括建立C MEX S-Fu…...
spring-boot 操作 mongodb 数据库
如何使用 spring-boot 操作 mongodb 数据库 配置文件: spring:data:mongodb:host: 127.0.0.1database: fly_articleDbport: 27017# 可以采取 mysql 写法# uri: mongodb://127.0.0.1/fly_articleDb依赖信息: <?xml version"1.0" encoding"UTF-…...
JVM篇---第三篇
系列文章目录 文章目录 系列文章目录一、什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?二、Java内存结构三、说说对象分配规则一、什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文…...
建筑施工行业招投标资源众包分包系统站点开发
一款针对建筑、施工行业开发的程序系统平台,运营方可以招募企业发布招投标信息以及招聘信息。 核心功能:一、项目招投标众包发布和投标 企业可以根据自身资源或者实际需求发布参与招投标信息,程序后台可以管理、审核用户发布的信息。参与招…...
【Linux基础】Linux发展史
👉系列专栏:【Linux基础】 🙈个人主页:sunny-ll 一、前言 本篇主要介绍Linux的发展历史,这里并不需要我们掌握,但是作为一个合格的Linux学习者与操作者,这些东西是需要了解的,而且…...
衡水移动网站建设/企业培训师资格证报考2022
坚持内容创作,提升自己在业内的影响力。 那么你自己在8小时内产生的价值就能够继续重复获利 很多人的潜能无限, 因此 很多人都可以都有很大可能成为那个你想成为的人! 但是 只有极少部分人能够将其潜能变成显能! 所有财富中,最宝贵的财富就是你自己! 最大限度地投资…...
国际空间站/精准信息预测
Apache Flink 是德国柏林工业大学的几个博士生和研究生从学校开始做起来的项目,早期叫做 Stratosphere。2014 年,StratoSphere 项目中的核心成员从学校出来开发了 Flink,同时将 Flink 计算的主流方向定位为流计算,并在同年将 Flin…...
wordpress+4.9+google/宁波优化关键词首页排名
林静F5软件方向解决方案架构师,历任 F5 Global Service ENE,APAC Professional Service 顾问,技术专家。拥有超过10多年的应用交付领域工作经验,秉承持续学习和反馈的理念,致力于现代应用体系下的应用服务研究。CNCF K…...
网站谷歌优化怎么做/网站关键词seo费用
如果您不介意使用JavaScript和jQuery,则可以使用jQuery client plugin检测操作系统,然后设置字体。它似乎是旧东西,但它适用于jQuery 1.3.2,如果它适用于jQuery 1.6.1,我不会感到惊讶。if($.client.os Mac)$(body).cs…...
辽宁建设工程信息网 大连市政府采购网/seo咨询
开篇章先是提到了软件测试方向的内容:软件程序软件工程,几乎所有的程序猿都知道这句名言,而且我们在学习软件工程时老师也向我们强调了这点,老师还说过软件程序数据文档。 软件学科现在已经成为比较独立的一个专业学科,…...
wordpress 主题 失败/深圳网络运营推广公司
学习目标: Mysql学习三、 学习内容: 1、管理Mysql 2、实用的SQL语句 1、管理Mysql 列出所有数据库 SHOW DATABASES; 创建新的数据库 CREATE DATABASE 数据库名; 删除一个数据库 DROP DATABASE 数据库名; 切换到使用的数据库(注…...