python基础教程六(字典方法)

字典方法

与其他内置类型一样,字典也有方法。字典的方法很有用,但其使用频率可能不高。

1. clear

方法clear删除所有的字典项,这中操作时就地执行的(就像list.sort一样),因此什么都不返回。

>>> d={}
>>> d
{'name': 'gumby'}
>>> d.clear()
>>> d
{}

这为何很有用呢?我们来看俩个场景。下面是第一个场景:

>>>x={}
>>>y=x
x['key']='value'
>>>y
{'key':'value'}
>>>x={}
>>>y
{'key':'value'}

下面是第二个场景:

>>>x={}
>>>y=x
>>>x['key']='value'
>>>y
{'key':'value'}
>>>x.clear()
>>>y
{}
在这俩个场景中,x和y最初都指向同一个字典。在第一个场景中,我通过将一个空字典赋给x来清空它。这对y没有任何影响,它依然指向原来的字典。这种行为可能正是你想要的,但是要删除原来字典的所有元素,必须使用clear。如果这样做,y也是空的,如第二个场景

2. copy

方法copy返回一个新字典,其包含的键-值与原来的字典相同(这个方法执行的是浅复制,因为值本身是原件,而非副本)。

>>> x={123:'asdsad','qianfuzhi':[1,2,3,4]}
>>> y=x.copy()
>>> y[123]='hahah'
>>> y['qianfuzhi'].remove(1)
>>> x
{123: 'asdsad', 'qianfuzhi': [2, 3, 4]}
>>> y
{123: 'hahah', 'qianfuzhi': [2, 3, 4]}

看到浅复制的含义了吗,很迷惑是不是,那就对了,我们复制过来值都可以把他们想象成一个指针,你可以拿c语言指针来解释,我们复制过来的值恐怕是指针,你直接操作字典中的值,只需要改变指针指向就好了,但是你要操作的是指针内部的数据,那就不对了,那x和y在’qianfuzhi’这项的值都是一样的指针,你改变里边的数当然都会改变。这个要怎么改变呢,就需要用到深复制 ,使用copy中的deepcopy函数解决,仔细猜想一下深复制就是把值复制另一内存之后再把复制之后的指针给z,所以操纵不影响原来的了,仅仅是猜想

>>> from copy import *
>>> x={123:'asdsad','qianfuzhi':[1,2,3,4]}
>>> y=x.copy()
>>> z=deepcopy(x)
>>> x['qianfuzhi'].append(5)
>>> y
{123: 'asdsad', 'qianfuzhi': [1, 2, 3, 4, 5]}
>>> x
{123: 'asdsad', 'qianfuzhi': [1, 2, 3, 4, 5]}
>>> z

3. fromkeys

方法fromkeys创建一个新字典,其中包含指定的键,且每个键对应的值都是none

>>> {}.fromkeys(['asda',123,456])
{'asda': None, 123: None, 456: None}

如果你不想使用默认值none,可以提供特定的值

>>> {}.fromkeys(['asda',123,456],123)
{'asda': 123, 123: 123, 456: 123}

4. get

方法get为访问字典项提供了宽松的环境。通常你试图访问字典中没有的项,将引发异常。

>>> d={}
>>> print(d['name'])
Traceback (most recent call last):File "<stdin>", line 1, in <module>
KeyError: 'name'

而使用get不会这样

>>> print(d.get('name'))
None

如你水煎,使用get来访问不存在的键时,没有引发异常,而是返回none。你可指定默认值

>>> d.get('name','N/A')
'N/A'
如果字典包含的特定的键,get的作用将与普通字典查找相同。```python
>>> d['123']=123
>>> d.get('123')
123

5. items

方法items返回一个包含所有字典项的一个列表,其中每个元素都为(key,value)的形式。字典项在列表中的排列顺序不确定。

>>> d.items()
dict_items([('123', 123)])

返回值属于名为字典视图的特殊类型。字典视图可用于迭代,另外,你还可确定其长度以及对其执行成员资格检查。

视图的一个有点是不复制,他始终是底层字典的反应,即使你修改了底层字典也是如此

>>> d
{'123': 123, '234': 1}
>>> ('234',0) in it
False
>>> d['234']=0
>>> ('234',0) in it
True

然而,如果你要将字典项复制到列表中可以自己动手做
p=list(d.items())

6. keys

方法keys返回一个字典视图,其中包含指定字典中的键。

7. pop

方法pop可以用于获取与指定键相关联的值,并将该键-值对从字典中删除

>>> d
{'123': 123, '234': 3}
>>> d.pop('123')
123
>>> d
{'234': 3}

8. popitem

方法popitem类似于list.pop,但list.pop弹出列表最后一个元素,popitem随机弹出一个字典项,因为字典项的顺序是不确定的,没有’最后一个元素的概念’。如果你要以高效地方式逐个删除并处理所有字典项,这可能很有用

9. setdefault

方法setdefault有点像get,因为它也获取与指定键相关的值,但除此之外,setdefault还在字典不包含指定的键,在字典中添加指定的键-值对。

>>> d={}
>>> d.setdefault(123,456)
456
>>> d
{123: 456}
>>> d.setdefault(123,123)
456
>>> d
{123: 456}
>>>

如你所见,指定键不存在时,setdefault返回指定的值并相应地更新字典。
如果指定的值存在,就返回其值,并保持字典不变。与get一样,值是可选的;如果没有指定,默认为none

10. update

方法update使用一个字典中的项来更新另一个字典。

>>> d
{123: 456}
>>> e={123:789,1:34,2:23}
>>> d.update(e)
>>> d
{123: 789, 1: 34, 2: 23}
>>>

对于通过参数提供的字典,将其项添加到当前字典。如果当前字典包含键相同的项,就替换它

10. value

方法values返回一个由字典中的值组成的字典视图。不同于方法keys,方法values返回的视图可能有重复的值

>>> d
{123: 789, 1: 34, 2: 23, 32: 34}
>>> d.values()
dict_values([789, 34, 23, 34])

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

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

相关文章

Qt/QML编程学习之心得:QSocketNotifier(二十一)

QSocketNotifier在Qt中怎么使用? QSocketNotifier使Qt的事件循环与其他基于文件描述符的事件循环集成成为可能。在Qt的主事件循环(QCoreApplication::exec())中检测到文件描述符操作。 使用低级(通常是特定于平台的)API打开设备后,可以创建一个套接字通知程序来监视文…

第七部分 使用变量 (上)

目录 一、变量的基础 二、变量中的变量 在 Makefile 中的定义的变量&#xff0c;就像是 C/C语言中的宏一样&#xff0c;他代表了一个文本字串&#xff0c; 在 Makefile 中执行的时候其会自动原模原样地展开在所使用的地方。其与 C/C所不同的 是&#xff0c;你可以在 Makefile…

DDoS攻击的多种方式

DDOS攻击指分布式拒绝服务攻击&#xff0c;即处于不同位置的多个攻击者同时向一个或数个目标发动攻击&#xff0c;或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者同时实施攻击。由于攻击的发出点是分布在不同地方的&#xff0c;这类攻击称为分布式拒绝服务…

leetcode:2451. 差值数组不同的字符串(python3解法)

难度&#xff1a;简单 给你一个字符串数组 words &#xff0c;每一个字符串长度都相同&#xff0c;令所有字符串的长度都为 n 。 每个字符串 words[i] 可以被转化为一个长度为 n - 1 的 差值整数数组 difference[i] &#xff0c;其中对于 0 < j < n - 2 有 difference[i]…

C# 路径搜索算法 A* 算法 和 Dijkstra 算法

A*算法和Dijkstra算法是两种常用的路径搜索算法&#xff0c;用于在图形结构中寻找最短路径。它们都属于单源最短路径算法&#xff0c;可以用于解决各种寻路问题。 A算法是一种启发式搜索算法&#xff0c;同时考虑了实际移动代价和估计距离代价&#xff0c;通过估计代价来指导搜…

【unity小技巧】FPS游戏实现相机的偏移震动、武器射击后退和后坐力效果

最终效果 文章目录 最终效果前言相机偏移震动相机震动脚本换弹节点震动 武器射击后退效果武器后坐力效果完结 前言 关于后坐力之前其实已经分享了一个&#xff1a;FPS游戏后坐力制作思路 但是实现起来比较复杂&#xff0c;如果你只是想要简单的实现&#xff0c;可以看看这个&…

JAVA计算组合数

JAVA计算组合数 /*** 计算组合数&#xff0c;即C(n, m) n!/((n-m)! * m!)* param n* param m* return*/public static long combination(int n, int m) {return (n > m) ? factorial(n) / factorial(n - m) / factorial(m) : 0;}

ROS OpenCV 级联分类器

Haar级联分类器、HOG级联分类器和LBP级联分类器都是计算机视觉中用于目标检测的特征提取与分类方法&#xff0c;它们各自利用不同的图像特征进行训练&#xff0c;并且通常结合级联结构来提升实时性。 一、Haar级联分类器 1. 特征描述&#xff1a; Haar特征由Paul Viola和Michae…

使用printJS使网页打印成PDF、网页html结合printJS导出为pdf

先放几个参考链接 感谢&#xff01; Vue使用PrintJS实现页面打印功能_vue print.js 设置打印pdf的大小-CSDN博客 前台导出pdf经验汇总 &#xff08;html2canvas.js和浏览器自带的打印功能-print.js&#xff09;以及后台一些导出pdf的方法_iqc后台管理系统怎么做到导出pdf-CSD…

大创项目推荐 深度学习图像分类算法研究与实现 - 卷积神经网络图像分类

文章目录 0 前言1 常用的分类网络介绍1.1 CNN1.2 VGG1.3 GoogleNet 2 图像分类部分代码实现2.1 环境依赖2.2 需要导入的包2.3 参数设置(路径&#xff0c;图像尺寸&#xff0c;数据集分割比例)2.4 从preprocessedFolder读取图片并返回numpy格式(便于在神经网络中训练)2.5 数据预…

ssm基于JSP的网络游戏交易系统的设计与实现+jsp论文

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;商品管理信息因为其管理内容繁杂&#xff0c;管理数量繁多导致手工进行处理不能满足…

面试题理解深层次的数组名

目录 引言 一&#xff1a;一维数组 举例如下 1.铺垫知识 数组名是数组首元素的地址&#xff0c;但是有两个特殊情况 &#xff08;1&#xff09;sizeof(数组名) &#xff08;2&#xff09;&数组名 2.分析讲解上述代码结果 2.字符数组 举例一如下 1.知识铺垫 …

(三)其他的输入输出

文章目录 getchar();单个字符输入使用&#xff1a; putchar();单个字符输出(自带换行)使用 puts();字符串输出与printf区别使用 gets();后面补充 代码现象 getchar(); 单个字符输入 使用&#xff1a; 变量 getchar(); 例&#xff1a;char a&#xff1b; a getchar(); put…

软件测试之单元测试、系统测试、集成测试知识总结

一、单元测试的概念 单元测试是对软件基本组成单元进行的测试&#xff0c;如函数或一个类的方法。当然这里的基本单元不仅仅指的是一个函数或者方法&#xff0c;有可能对应多个程序文件中的一组函数。 单元也具有一些基本的属性。比如&#xff1a;明确的功能、规格定义&#…

PHP进阶-实现网站的QQ授权登录

授权登录是站点开发常见的应用场景&#xff0c;通过社交媒体一键授权可以跳过注册站点账户的繁琐操作。本文将讲解如何用PHP实现QQ授权登录。首先&#xff0c;我们需要申请QQ互联开发者账号获得APPID和密钥&#xff1b;接着&#xff0c;我们下载QQ官方SDK&#xff1a;PHP SDK v…

【Docker】 Docker 开发注意事项

在使用 Docker 进行开发时,需要注意以确保开发过程顺利和高效: 1. 了解 Docker 基础:在开始之前,了解 Docker 的基本概念,如镜像(Images)、容器(Containers)、仓库(Repositories)和 Dockerfile 的基本语法。 2. 编写清晰的 Dockerfile:Dockerfile 应该清晰、简洁,…

IP地址定位技术的应用及其重要性

随着网络技术的快速发展&#xff0c;网络安全问题日益凸显&#xff0c;IP地址定位技术在网络安全领域的应用也越来越广泛。本文将介绍IP地址定位技术在网络安全领域的应用及其重要性。 一、IP地址定位技术概述 IP地址定位技术是指通过一定的技术手段&#xff0c;将虚拟网络中的…

关于《码农翻身》一书的读后感以及自己的一些拙见汇总

书籍名称 《码农翻身》 | 刘欣&#xff08;码农翻身&#xff09; 著 | 文章将以问答的形式进行叙述 1.是从什么渠道接触到《码农翻身》的 一个工作日的下午&#xff0c;手上的任务基本结束&#xff0c;翻了翻桌上的书和笔记之类的&#xff0c;同事见我在看书&#xff0c;于是向…

Java 标准注解和元注解

Java 标准注解 Java 1.5开始自带的标准注解&#xff0c;包括Override、Deprecated和SuppressWarnings&#xff1a; Override&#xff1a;表示当前的方法定义将覆盖父类中的方法Deprecated&#xff1a;表示代码被弃用&#xff0c;如果使用了被Deprecated注解的代码则编译器将发…

华为云服务介绍(二)

在 华为云服务介绍(一) 中我们看到华为云提供了一系列的云服务,包括计算、存储、网络、数据库、安全等方面的解决方案。通过灵活的系统架构设计,可以充分利用这些云服务技术,从而更好地满足用户的需求。 本文从系统架构的角度出发,通过充分利用华为云提供的各种云服务技…