首页 文章 精选 留言 我的

精选列表

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

oeasy python 132 存取字典项_access_dictionary_item

# 存取字典项_access_dictionary_item ## 回忆 - 上次 研究了 - dictionay 的 词根和同义词 - 字典 有什么 `方法` 呢?🤔 ![图片描述](https://developer.qcloudimg.com/http-save/7606088/74e498be3d96dc04aa8f1cebef29aae8.png) - 先回忆 列表方法 ### 回忆 - 构建列表 ``` l = ["zero", "one"] l l[0] l[1] ``` - 可以 数字 索引到 列表项 ![图片描述](https://developer.qcloudimg.com/http-save/7606088/811d32b421c842b5fcecc4a1f2b350bd.png) - 字典中的 `key` - 也可以是数字吗? ### 字典 - 用整形数字作为key ``` d = {0: "zero", 1: "one"} d d[0] d[1] ``` - 尝试 ![图片描述](https://developer.qcloudimg.com/http-save/7606088/d55f54d86db8fbbddf53655735e3752d.png) - 看起来这个时候 - 字典就相当于一个列表? ### 数据类型的意义 - 观察类型 ``` type(l) type(d) ``` - l 是 - 列表类的对象 - 使用 list类的 方法 ![图片描述](https://developer.qcloudimg.com/http-save/7606088/79c26c034d57645b38300098361b59a1.png) - d是 - 字典类的对象 - 使用 字典类(dict)的方法 ![图片描述](https://developer.qcloudimg.com/http-save/7606088/9ee4f7e3b4472bee3f8cecb3b23b8893.png) - 变量类型 不一样 - 方法也不一样 ### 颜色 - 比如我 想建立一个 终端颜色字典 - 我们 只能记住 颜色名字 - red - blue - green - 但是记不住颜色的编号 ``` colors = { "red": "\x1b[31m", "reset": "\x1b[0m", } colors ``` - 字典多大? ### 字典容量 ``` len(colors) ``` - 容量为2 ![图片描述](https://developer.qcloudimg.com/http-save/7606088/6d4f3da9b7bf94ce78075f9e23b2f29d.png) - 收录两种颜色 - 一个红色 \33[31m - 一个还原色 \33[0m ![图片描述](https://developer.qcloudimg.com/http-save/7606088/f36dfa842b37595fb5c3fe54536b7962.png) - 这个东西怎么用呢? ### 使用字典 ``` colors["red"] colors["reset"] print(colors["red"]) print("red!red!red!") ``` - 后面的文字 全都染红 了 ![图片描述](https://developer.qcloudimg.com/http-save/7606088/6c33339542b92c7026195c33a71d6bb3.png) - 想把颜色恢复 ### 颜色复位 ``` print(colors["reset"]) ``` - 颜色复位了 ![图片描述](https://developer.qcloudimg.com/http-save/7606088/bb690194decf69afbddda4cc0f6b7794.png) ### 控制颜色输出范围 - 要求 - 只有 [ERROR]变红 - 前面 加colors["red"] - 后面 加colors["reset"] - 相当于 选中[ERROR] ``` print(colors["red"], "[ERROR]", colors["reset"], "oeasy") ``` - 通过 key 来找到 value - 这是 映射(map)关系 - 通过 key 键 - 得到 value 值 ![图片描述](https://developer.qcloudimg.com/http-save/7606088/9137ce42000d77e4d8dcf47f9c8cc9aa.png) - 这样不用记颜色数值号了! - 靠的是什么? ### 映射字典 - 靠的 就是 key-value 之间的 - 映射 (mapping) - 想给 颜色字典 加个绿色 ![图片描述](https://developer.qcloudimg.com/http-save/7606088/e04ed7f916a88373bb62a8fa13a45499.png) - 怎么办?🤔 ### 增加字典项 - 直接写 ``` colors["green"] = "\x1b[32m" colors ``` - 先添加 这个 键值对(pair) - 增加 green 这个键(key) - 以及\x1b[32m 这个值(value) ![图片描述](https://developer.qcloudimg.com/http-save/7606088/90ed00bd746fc2d2e77a1077e77b2d5d.png) - 观察字典容量 ``` len(colors) ``` - colors字典容量+1 ![图片描述](https://developer.qcloudimg.com/http-save/7606088/64f3e187f7f49326c80b5f910fdcb18b.png) - 再 使用绿色 ``` print(colors["green"], "[info]", colors["reset"], "oeasy") ``` - 效果 ![图片描述](https://developer.qcloudimg.com/http-save/7606088/41a90d8c267de13c98e428622e16ab2f.png) - 如果 - 已经 有green 了 - 我想要 修改 呢? ### 修改字典项 - 如果 green 这个key - 在字典里 已经有了 - 就 对于green 这个key 对应的的value - 进行修改 ``` colors["green"] = "\x1b[42m" colors ``` - 把 黑底绿字`\x1b[32m` - 变成了 绿底白字`\x1b[42m` ``` print(colors["green"], "[info]", colors["reset"], "oeasy") ``` - 效果 ![图片描述](https://developer.qcloudimg.com/http-save/7606088/a07db302d60e3a8e3853d2e8bc8febc7.png) - 可以用update方法 - 更新 字典项 吗? ### 更新字典项 - 虽说先删除再添加也能更新 ``` colors = { "red": "\x1b[31m", "green": "\x1b[32m", "reset": "\x1b[0m", } print(colors["red"], "[ERROR]", colors["reset"], "oeasy") colors.update(red="\x1b[41m") print(colors["red"], "[ERROR]", colors["reset"], "oeasy") ``` - 试试这个 update ![图片描述](https://developer.qcloudimg.com/http-save/7606088/a72e24be4a50290da1dd0357ee6036f1.png) - 字典项的 增删改 - 都是通过 key索引到 字典项 - 如果 我想 - 删除 字典项 呢? ### 删除字典项 - 可以 直接del 删除 ``` del colors["green"] ``` - 有点像 del删除 - 列表 索引的元素 ![图片描述](https://developer.qcloudimg.com/http-save/7606088/68211bbb159ff3d9b7820a089ca0e3c9.png) - 还有啥 删除的方法吗? ### pop ``` lst = list(range(6)) lst ``` - 先回忆 list.pop ![图片描述](https://developer.qcloudimg.com/http-save/7606088/1023371d997e5f486010eadfa3667afa.png) - 从 栈顶 弹栈 ``` lst.pop() lst ``` - 弹出最后一个 ![图片描述](https://developer.qcloudimg.com/http-save/7606088/d1e465586f1a69922502f003887ea62d.png) - 回忆 弹栈 ### 弹栈 - pop the stack - 弹栈 ![图片描述](https://developer.qcloudimg.com/http-save/7606088/b30da88d82925e8f23470abec71adbb9.png) - LIFO - Last In First Out - 后入先出 - 可以要求 弹谁 吗? ### 弹出 指定列表项 - 要求弹出2 ``` lst.pop(2) ``` - 从列表中删除 - 并 返回列表项 ![图片描述](https://developer.qcloudimg.com/http-save/7606088/b733ac93ad1f5e576d2f4f02b0f794bb.png) - 如果 再pop(2) ``` lst.pop(2) ``` - 找到新的第2项 弹出 ![图片描述](https://developer.qcloudimg.com/http-save/7606088/d752b80c0691d0d66a6c620e3e595ba3.png) - 列表项不存在呢? ``` lst.pop(100) lst ``` - 报索引错误 ![图片描述](https://developer.qcloudimg.com/http-save/7606088/9014400dd88bf2d5f07dcbeded561b9f.png) - 再来看 字典 ### pop ``` d = { "cat": "miao", "dog": "wang" } ``` - 直接弹栈 ``` d.pop() ``` - 不知道 弹谁 - 报 KeyError ![图片描述](https://developer.qcloudimg.com/http-save/7606088/c5a0e5eb39c7142b84830228e0e15e74.png) ### 弹出指定字典项 - 用pop方法 删除key ``` d d.pop("cat") d d.pop("dog") d ``` - 在字典里 找key - 找到了 就删除 - 返回 value ![图片描述](https://developer.qcloudimg.com/http-save/7606088/4704a15b4de86891a5784128717573ca.png) - pop方法 没有找到key 呢? ### 没有找到 ``` d d.pop("rat") ``` - 没有找到 - 抛出异常 ![图片描述](https://developer.qcloudimg.com/http-save/7606088/5eb03ec97d0911b60461c80235223f1f.png) - 除非 有第二个参数 ``` d.pop("rat", "notfound") ``` - 有第二个参数的话 - 就返回 第二个参数 ![图片描述](https://developer.qcloudimg.com/http-save/7606088/a75bcd89551b1d991d71caee40bf3b13.png) - 观察文档 ### pop ``` help(dict.pop) ``` - 弹栈 ![图片描述](https://developer.qcloudimg.com/http-save/7606088/bb822527c10c2a3fab38fe8055c73694.png) - dict.pop和list.pop - 有啥区别吗? ### 两种类型的 pop |特点|list.pop()|dict.pop()| | --- | --- | --- | |参数|索引 index|键 key| |无参数|弹栈顶|报错| |返回值|被弹元素|被弹键 对应的值| |不存在|报错|报错 / 设默认值 就 不报错| - 时间复杂度 如何? ### 时间复杂度 ![图片描述](https://developer.qcloudimg.com/http-save/7606088/11b740a9348d5280117a98dcbf54b23e.png) - dict.pop 时间复杂度为O(1) - list.pop(i) 时间复杂度 O(n) - 字典删除效率更高 - 不过需要空间更大 ``` d.pop() ``` - 不支持 无参数 弹栈 ![图片描述](https://developer.qcloudimg.com/http-save/7606088/4a42efc7a56b8197310aa44481a128b2.png) - 想要 无参弹栈 怎么办? ### 求助 - 不用参数 的 popitem ``` help(dict.popitem) ``` - 字典 非空 - 弹出最后一个 ![图片描述](https://developer.qcloudimg.com/http-save/7606088/6b4d707bb87b01a312fc3887f6e5a53b.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/5eb3ee9dfe212c65b5164269e1e10a74.png) ### 字典的顺序 - 这两个字典不一样 ``` d = {"cat": "miao"} d["dog"] = "wang" d2 = {"dog": "wang"} d2["cat"] = "miao" d d2 ``` - 第一个弹出的 字典项 也不一样 ![图片描述](https://developer.qcloudimg.com/http-save/7606088/e97ae83b3512a1ca2511391381f18ee2.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/fc99c8fd89d3c9d76ca4f1ae9626ddc9.png) - =是直接 赋字典地址 - 两个字典指向相同位置 ### copy ``` colors = { "red": "f00", "blue": "0f0", } colors2 = colors.copy() ``` - 拷贝是复制出一个字典 ![图片描述](https://developer.qcloudimg.com/http-save/7606088/3a8f25fa023b3c21d6a0cb3a98b56748.png) - 但是拷贝是浅拷贝 - shallow copy ### 浅拷贝 - 字典某个键的值 是 - 一个列表时 - 浅拷贝只能拷贝列表地址 ``` colors = { "red": ["f00","ff0000"], "blue": "0f0", } colors2 = colors.copy() ``` - 两个新字典中"red"对应的值是同一个列表 list ![图片描述](https://developer.qcloudimg.com/http-save/7606088/47aa414036d7fb21d72520e87c3a950d.png) - 换成深拷贝 ### 深拷贝 - 深拷贝深拷贝 - 深层次的拷贝 ``` from copy import deepcopy colors = { "red": ["f00","ff0000"], "blue": "0f0", } colors2 = deepcopy(colors) ``` - 彻底分配了 新空间 ![图片描述](https://developer.qcloudimg.com/http-save/7606088/fe7d4fd645a7c25bb74c0d72d42e7cb4.png) - 如果列表 作为key可以吗? ### 列表作为key ``` d = { ["f00", "ff0000"]: "red" } ``` - 报错 - key 必须是 可哈希的 ![图片描述](https://developer.qcloudimg.com/http-save/7606088/d628920c5f0f6edec947ef692b18ba4b.png) - list是变量 - 不可哈希 ### 总结 - 这次学习了 字典删除 - del 删除字典项 - pop 弹栈 - popitem 顺序弹栈 ![图片描述](https://developer.qcloudimg.com/http-save/7606088/1daa29be192631ed2870708854fa2156.png) - 字典 有什么 实际应用吗??🤔 - 下次再说!👋🏻

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

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部分的功能。

用户登录
用户注册