Lesson 2-4(字典)
2.7 字典
&、字典是许多值的集合,索引可以使用许多不同的数据类型,不只是整数,可以是数、字符串或元组。
&、字典的索引被称为“键”,键及其关联的值称为“键-值”对,这种键-值对也称为项。
&、字典是python中唯一的内置映射类型,其中的值不按顺序排列,而是存储在键下。
&、字典中的项不排序,所以不能像列表那样切片;访问字典中不存在的键时,将会报错。
2.7.1 创建字典
--- 字典可使用花括号创建,每个键及值之间用冒号分隔,项之间用逗号分隔;空字典只用两个花括号表示,花括号内没有任何项。
--- 可是用函数dict从其它映射或键值对序列创建字典。
- >>> dic_1 = {'name': 'LiMing', 'age': 20}
- >>> items = [('name', 'Maly'), ('age', 18)]
- >>> dic_2 = dict(items)
--- 可以使用关键字实参来调用dict函数。
- >>> dict_3 = dict(name = 'Grubby', age = 25)
- >>> dict_3
- {'name': 'Grubby', 'age': 25}
- >>>
2.7.2 基础操作
--- 方法keys()、values()、items()分别返回对应的字典的键、值和键值对的值。
--- 返回的值类似于列表但不是列表,不能被修改, 分别是dict_keys、dict_values 和 dict_items类型,可用于for循环。
- >>> dic = {'a':1, 'b':2, 'c':3}
- >>> dic.keys()
- dict_keys(['a', 'b', 'c'])
- >>> dic.values()
- dict_values([1, 2, 3])
- >>> dic.items()
- dict_items([('a', 1), ('b', 2), ('c', 3)])
- >>> type(dic.keys())
- <class 'dict_keys'>
- >>> type(dic.values())
- <class 'dict_values'>
- >>> type(dic.items())
- <class 'dict_items'>
- >>>
--- len(dic)返回字典dic包含的项数。
--- dic[key]返回字典dic中键key对应的值。
--- dic[key]=value将字典dic中键key的值更新为value,如原字典dic中没有该键key,则增加该项到字典dic中。
--- del dic[key]将删除字典dic中键key的项(键值对)。
- 1 >>> dic = {'a':1, 'b':2, 'c':3}
- 2 >>> len(dic)
- 3 3
- 4 >>> dic['b']
- 5 2
- 6 >>> dic['c'] = 5
- 7 >>> dic
- 8 {'a': 1, 'b': 2, 'c': 5}
- 9 >>> del dic['a']
- 10 >>> dic
- 11 {'b': 2, 'c': 5}
- 12 >>>
- 13 >>> dic['f'] = 10
- 14 >>> dic
- 15 {'b': 2, 'c': 5, 'f': 10}
- 16 >>>
--- 成员资格,使用in和not in操作符判定。
- >>> dic = {'a':1, 'b':2, 'c':3}
- >>> 'b' in dic.keys()
- True
- >>> 'f' in dic.keys()
- False
- >>> 'b' in dic.values()
- False
- >>> '' in dic.values()
- False
- >>> 3 in dic.values()
- True
- >>>
2.7.3 常用方法
--- get()方法:如果试图访问字典中没有的项,将引发错误,使用方法get,则很好的解决该问题。方法get有两个参数,第一个是要取得其值的键,必选;第二个是字典中没有要访问的项时返回的值,可选,不选时默认返回None。
- >>> dic = {'a':1, 'b':2, 'c':3}
- >>> print(dic['f'])
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- KeyError: 'f'
- >>> print(dic.get('f'))
- None
- >>> print(dic.get('b'))
- 2
- >>> print(dic.get('f', 'N/A'))
- N/A
- >>>
--- setdefault()方法:该方法设置字典中要检测的键的默认值。两个参数,第一个参数是要设置的键;第二个参数是,如果字典中没有该项,则该参数赋给该项并返回该值,如果字典中有该项则返回该项中的值。
- >>> dic = {'a':1, 'b':2, 'c':3}
- >>> print(dic)
- {'a': 1, 'b': 2, 'c': 3}
- >>> print(dic.setdefault('b', 100))
- 2
- >>> print(dic)
- {'a': 1, 'b': 2, 'c': 3}
- >>> print(dic.setdefault('f', 200))
- 200
- >>> print(dic)
- {'a': 1, 'b': 2, 'c': 3, 'f': 200}
- >>>
--- keys()方法和values()方法:分别返回一个字典视图,分别包含字典中的所有键和字典中的所有值。
- >>> dic = {'a':1, 'b':2, 'c':3}
- >>> print(dic.keys())
- dict_keys(['a', 'b', 'c'])
- >>> print(dic.values())
- dict_values([1, 2, 3])
- >>>
--- items()方法:返回一个包含所有字典项的字典视图,其中每个元素都为(key,values)的形式。
- >>> dic = {'a':1, 'b':2, 'c':3}
- >>> print(dic.items())
- dict_items([('a', 1), ('b', 2), ('c', 3)])
- >>> print(len(dic.items()))
- 3
- >>> print(list(dic.items()))
- [('a', 1), ('b', 2), ('c', 3)]
- >>>
--- pop()方法:获取与指定键相关联的值,并将该项从字典中删除。
- >>> dic = {'a':1, 'b':2, 'c':3}
- >>> print(dic.pop('c'))
- 3
- >>> print(dic)
- {'a': 1, 'b': 2}
- >>>
---popitem()方法:类似list.pop(),list.pop()弹出列表中的最后一个元素,popitem()随机弹出一个字典项。
- >>> dic = {'a':1, 'b':2, 'c':3}
- >>> print(dic.popitem())
- ('c', 3)
- >>> print(dic)
- {'a': 1, 'b': 2}
- >>>
--- formkeys()方法:创建一个新字典,包含指定的键,且每个键对应的值默认是None,也可指定一个值。
- >>> print(dic.fromkeys(['a','b']))
- {'a': None, 'b': None}
- >>> print(dic.fromkeys(['a','b'], 'N/A'))
- {'a': 'N/A', 'b': 'N/A'}
- >>>
--- copy()方法:执行浅复制,返回一个新字典,包含的项与原来的字典相同。
- >>> dic_1 = {'a':1, 'b':2, 'c':3}
- >>> dic_2 = dic_1.copy()
- >>> print(dic_1)
- {'a': 1, 'b': 2, 'c': 3}
- >>> print(dic_2)
- {'a': 1, 'b': 2, 'c': 3}
- >>> dic_1['c'] = 99
- >>> print(dic_1)
- {'a': 1, 'b': 2, 'c': 99}
- >>> print(dic_2)
- {'a': 1, 'b': 2, 'c': 3}
- >>> del dic_1['a']
- >>> print(dic_1)
- {'b': 2, 'c': 99}
- >>> print(dic_2)
- {'a': 1, 'b': 2, 'c': 3}
- >>>
--- clear()方法:删除所有的字典项,并返回None。
- >>> dic = {'a':1, 'b':2, 'c':3}
- >>> print(dic)
- {'a': 1, 'b': 2, 'c': 3}
- >>> print(dic.clear())
- None
- >>> print(dic)
- {}
- >>>
Lesson 2-4(字典)的更多相关文章
- 【cf842D】Vitya and Strange Lesson(01字典树)
D. Vitya and Strange Lesson 题意 数列里有n个数,m次操作,每次给x,让n个数都异或上x.并输出数列的mex值. 题解 01字典树保存每个节点下面有几个数,然后当前总异或的 ...
- Vitya and Strange Lesson CodeForces - 842D 字典树+交换节点
题意: Today at the lesson Vitya learned a very interesting function - mex. Mex of a sequence of number ...
- codeforces 842 D. Vitya and Strange Lesson(01字典树+思维+贪心)
题目链接:http://codeforces.com/contest/842/problem/D 题解:像这种求一段异或什么的都可以考虑用字典树而且mex显然可以利用贪心+01字典树,和线段树差不多就 ...
- 【DG】Oracle_Data_Guard官方直译
[DG]Oracle Data Guard官方直译 1 Oracle Data Guard 介绍 Oracle Data Guard概念和管理10g版本2 Oracle Data Guard ...
- DVWA实验之Brute Force(暴力破解)- Low
DVWA实验之Brute Force-暴力破解- Low 这里开始DVWA的相关实验~ 有关DVWA环境搭建的教程请参考: https://www.cnblogs.com/0yst3r-2 ...
- Oracle错误览表
Oracle 错误总结及问题解决 ORA 本文转自:https://www.cnblogs.com/zhangwei595806165/p/4972016.html 作者@承影剑 ORA-0 ...
- CodeForeces 842d Vitya and Strange Lesson ——(带lazy标记的01字典树)
给一个序列,每次操作对这个序列中的所有数异或一个x,问每次操作完以后整个序列的mex值. 做法是去重后构建01字典树,异或x就是对root加一个x的lazy标志,每次pushDown时如果lazy的这 ...
- dictionary(字典)
dictionary(字典): 字典对象 字典是一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划.字母来查对应页的详细内容. 1. dic={"n ...
- 7、字典和string的用法
#dic={1:'alex','age':35,'hobby':{'girl_name':'铁锤','age':45},'is_handsome':True} # dic={'age':'alex', ...
随机推荐
- 支持“XXX”上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库(http://go.microsoft.com/fwlink/?LinkId=238269)。
在Global.asax文件中的Application_Start()方法中加入以下代码 Database.SetInitializer<XXX>(null);
- U68364 _GC滑迷宫
题目背景 _GC买了一双蔡徐坤一代. 题目描述 _GC进入了一个n*m的迷宫.本题的特殊之处在于,_GC只能滑着走.具体来说就是,选定一个方向后,_GC会一直向该方向滑,直到撞到墙.会给出_GC的起始 ...
- Hall定理 二分图完美匹配
充分性证明就先咕了,因为楼主太弱了,有一部分没看懂 霍尔定理内容 二分图G中的两部分顶点组成的集合分别为X, Y(假设有\(\lvert X \rvert \leq \lvert Y \rvert\) ...
- 分布式锁与实现(一)——基于Redis实现 【比较靠谱】
转: 分布式锁与实现(一)——基于Redis实现 概述 目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题.分布式的CAP理论告诉我们“任何一个分布式系统 ...
- 怎么添加在安装好的nvidia-docker上面根据Dockerfile构建自己所需要的运行环境
在已经创建好nvidia-docker环境之后,对于新手小白来说,又有一个问题了,就是如何根据Dockerfile来构建试验所需要的docker环境 主要是以下几个步骤 首先创建一个mydocker文 ...
- xml转换为json格式时,如何将指定节点转换成数组 Json.NET
使用Json.NET转换xml成json时,如果xml只有单个节点,但json要求是数组形式[], JsonConvert.SerializeXmlNode 并不能自动识别 示例如下: RecordA ...
- 使用vcastr22.swf做flash版网页视频播放器
flash的安装设置参考 Flash设置(各种版本浏览器包括低版本IE) 百度搜索下载vcastr22.swf文件 然后使用方式很简单,浏览器安装flash相关插件就能看了 视频路径主要在这里,视频 ...
- 最大似然估计与期望最大化(EM)算法
一.最大似然估计与最大后验概率 1.概率与统计 概率与统计是两个不同的概念. 概率是指:模型参数已知,X未知,p(x1) ... p(xn) 都是对应的xi的概率 统计是指:模型参数未知,X已知,根据 ...
- Git的相关知识
什么是git Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理.Git 是 Linus Torvalds 为了帮助管理 Lin ...
- unix域数据报回射程序(不完整)
一.服务器程序 int main(int argc, char **argv) { int sockfd; struct sockaddr_un servaddr, cliaddr; sockfd = ...