首页 文章 精选 留言 我的

精选列表

搜索[remove],共4084篇文章
优秀的个人博客,低调大师

oeasy python 133 删除字典项 del remove

## 删除字典项_del_pop_popitem_字典深浅拷贝 ## 回忆 - 上次学习了字典 - 字典 可以 读取和赋值 - 字典项 可以 增删改 - 直接 用key 索引 - del 删除字典项 - update 更新 ![](https://developer.qcloudimg.com/http-save/7606088/8656c9866a3068b68d16b876aa9f9928.png) - 还有什么方法 可以删除 吗???🤔 ### pop - 回忆列表 ``` lst = list(range(6)) lst ``` - 先回忆 list.pop ![](https://developer.qcloudimg.com/http-save/7606088/82e8fd2b354d50b1cfd98acdf065566c.png) - 从 栈顶 弹栈 ``` lst.pop() lst ``` - 弹出最后一个 ![](https://developer.qcloudimg.com/http-save/7606088/a2063405a56b04036779b41834c27537.png) - 回忆 弹栈 ### 弹栈 - pop the stack - 弹栈 ![](https://developer.qcloudimg.com/http-save/7606088/11a798ff6cc6e15da3ee96e529f2431b.png) - LIFO - Last In First Out - 后入先出 - 可以要求 弹谁 吗? ### 弹出 指定列表项 - 要求弹出2 ``` lst.pop(2) ``` - 从列表中删除 - 并 返回列表项 ![](https://developer.qcloudimg.com/http-save/7606088/97bedde2c0ec5cf61685283c28ad6d44.png) - 如果 再pop(2) ``` lst.pop(2) ``` - 找到新的第2项 弹出 ![](https://developer.qcloudimg.com/http-save/7606088/f9871fd5044331f1cd35c5b8919883a8.png) - 列表项不存在呢? ``` lst.pop(100) lst ``` - 报索引错误 ![](https://developer.qcloudimg.com/http-save/7606088/9dd71e8413e9047acd31a77fc753fcb1.png) - 再来看 字典 ### pop ``` d = { "cat": "miao", "dog": "wang" } ``` - 直接弹栈 ``` d.pop() ``` - 不知道 弹谁 - 报 KeyError ![](https://developer.qcloudimg.com/http-save/7606088/edb264f723cdd8f761a55a188952563e.png) ### 弹出指定字典项 - 用pop方法 删除key ``` d d.pop("cat") d d.pop("dog") d ``` - 在字典里 找key - 找到了 就删除 - 返回 value ![](https://developer.qcloudimg.com/http-save/7606088/3dd520b555655b7edb188c1c89119f79.png) - pop方法 没有找到key 呢? ### 没有找到 ``` d d.pop("rat") ``` - 没有找到 - 抛出异常 ![](https://developer.qcloudimg.com/http-save/7606088/0b4c9592aabc64a48069daa794536861.png) - 除非 有第二个参数 ``` d.pop("rat", "notfound") ``` - 有第二个参数的话 - 就返回 第二个参数 ![](https://developer.qcloudimg.com/http-save/7606088/0bd5c4583ac0cbff00f3b72c3e84f5ec.png) - 观察文档 ### pop ``` help(dict.pop) ``` - 弹栈 ![](https://developer.qcloudimg.com/http-save/7606088/cf272587c87af94032f74398304289b1.png) - dict.pop和list.pop - 有啥区别吗? ### 两种类型的 pop |特点|list.pop()|dict.pop()| | --- | --- | --- | |参数|索引 index|键 key| |无参数|弹栈顶|报错| |返回值|被弹元素|被弹键 对应的值| |不存在|报错|报错 / 设默认值 就 不报错| - 时间复杂度 如何? ### 时间复杂度 ![](https://developer.qcloudimg.com/http-save/7606088/6e4fb3b3c5448910cb42c373dd09476d.png) - dict.pop 时间复杂度为O(1) - list.pop(i) 时间复杂度 O(n) - 字典删除效率更高 - 不过需要空间更大 ``` d.pop() ``` - 不支持 无参数 弹栈 ![](https://developer.qcloudimg.com/http-save/7606088/5edc643370b9d007fa957a56b3a5eff5.png) - 想要 无参弹栈 怎么办? ### 求助 - 不用参数 的 popitem ``` help(dict.popitem) ``` - 字典 非空 - 弹出最后一个 ![](https://developer.qcloudimg.com/http-save/7606088/a64fe711e5420478139b440ac52aa45f.png) - 后入字典的 先弹出 - 由此可见 字典 是 有顺序的 ### 实践 ``` d = {"cat": "miao"} d["dog"] = "wang" d ``` - 先弹出 后面的dog - 再弹出 前面的cat ``` d.popitem() d d.popitem() d d.popitem() d ``` - 弹到 字典空了 - 直接抛出异常 ![](https://developer.qcloudimg.com/http-save/7606088/24972fa1176e8a50b4ccad8d8af922a6.png) ### 字典的顺序 - 这两个字典不一样 ``` d = {"cat": "miao"} d["dog"] = "wang" d2 = {"dog": "wang"} d2["cat"] = "miao" d d2 ``` - 第一个弹出的 字典项 也不一样 ![](https://developer.qcloudimg.com/http-save/7606088/91a2fe75fe9ac31eb87e9fa1d66eb879.png) - 字典可以拷贝吗? ### 基础拷贝 ``` colors = { "red": "f00", "blue": "0f0", } colors2 = colors ``` - [https://pythontutor.com/visualize.html#mode=display](https://pythontutor.com/visualize.html#mode=display) ![](https://developer.qcloudimg.com/http-save/7606088/b18a8258f25f3d6159e0fecb059976ca.png) - =是直接 赋字典地址 - 两个字典指向相同位置 ### copy ``` colors = { "red": "f00", "blue": "0f0", } colors2 = colors.copy() ``` - 拷贝是复制出一个字典 ![](https://developer.qcloudimg.com/http-save/7606088/9cf3d393a9987f84355573aa325a9f33.png) - 但是拷贝是浅拷贝 - shallow copy ### 浅拷贝 - 字典某个键的值 是 - 一个列表时 - 浅拷贝只能拷贝列表地址 ``` colors = { "red": ["f00","ff0000"], "blue": "0f0", } colors2 = colors.copy() ``` - 两个新字典中"red"对应的值是同一个列表 list ![](https://developer.qcloudimg.com/http-save/7606088/ce5bf632628b6c6fb0d693fb36f0146c.png) - 换成深拷贝 ### 深拷贝 - 深拷贝深拷贝 - 深层次的拷贝 ``` from copy import deepcopy colors = { "red": ["f00","ff0000"], "blue": "0f0", } colors2 = deepcopy(colors) ``` - 彻底分配了 新空间 ![](https://developer.qcloudimg.com/http-save/7606088/b1d725d618116f74f56b39abc89ce58f.png) - 如果列表 作为key可以吗? ### 列表作为key ``` d = { ["f00", "ff0000"]: "red" } ``` - 报错 - key 必须是 可哈希的 ![](https://developer.qcloudimg.com/http-save/7606088/e60f26a4c3716da369ff0f383d8d0a03.png) - list是变量 - 不可哈希 ### 总结 - 这次学习了字典 - 字典 可以 读取和赋值 - 字典项 可以 增删改 - 直接 用key 索引 - del 删除字典项 - update 更新 - pop 弹栈 - popitem 顺序弹栈 ![](https://developer.qcloudimg.com/http-save/7606088/8656c9866a3068b68d16b876aa9f9928.png) - 字典 有什么 实际应用吗??🤔 - 下次再说!👋🏻 - 本文来自 oeasy Python 系统教程。 - 想完整、扎实学 Python, - 搜索 oeasy 即可。

优秀的个人博客,低调大师

为什么阿里巴巴禁止在 foreach 循环里进行元素的 remove/add 操作

GitHub 1.7k Star 的Java工程师成神之路 ,不来了解一下吗? GitHub 1.7k Star 的Java工程师成神之路 ,真的不来了解一下吗? GitHub 1.7k Star 的Java工程师成神之路 ,真的确定不来了解一下吗? 在阿里巴巴Java开发手册中,有这样一条规定:  但是手册中并没有给出具体原因,本文就来深入分析一下该规定背后的思考。 foreach循环 Foreach循环(Foreach loop)是计算机编程语言中的一种控制流程语句,通常用来循环遍历数组或集合中的元素。 Java语言从JDK 1.5.0开始引入foreach循环。在遍历数组、集合方面,foreach为开发人员提供了极大的方便。 foreach 语法格式如下: for(元素类型t 元素变量x : 遍历对象obj){ 引用了x的java

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册