python-字典(第二篇(四):字典)
【Python之旅】第二篇(四):字典
摘要: 说明: 显然Python中字典的学习过程与列表是一样的,主要是围绕下面的函数来进行重点学习: 1 2 3 4 5 6 7 8 9 10 11 >>> xpleaf. xpleaf.clear( xpleaf.copy( xpleaf.get( xpleaf.has_key(...
说明:
显然Python中字典的学习过程与列表是一样的,主要是围绕下面的函数来进行重点学习:
1
2
3
4
5
6
7
8
9
10
11
|
>>> xpleaf. xpleaf.clear( xpleaf.copy( xpleaf. get ( xpleaf.has_key( xpleaf.items( xpleaf.keys( xpleaf.pop( xpleaf.popitem( xpleaf.setdefault( xpleaf.update( |
1.基本操作
--创建一个字典
1
2
3
4
5
6
7
8
|
>>> xpleaf = { ... 'name' : 'xpleaf' , ... 'occupation' : 'student' , ... 'hobby' : 'computer' , ... 'dream' : 'excellent hacker' ... } >>> xpleaf { 'hobby' : 'computer' , 'dream' : 'excellent hacker' , 'name' : 'xpleaf' , 'occupation' : 'student' } |
·容易观察到字典的输出并没有按照创建字典时的顺序进行输出,因为字典按哈希值查找内容,而不是按索引号;
·{key:value}是字典的基本语法格式,key是唯一的,value可为大多数数据类型;
--查看键值对应的内容
1
2
|
>>> xpleaf[ 'hobby' ] 'computer' |
--修改键值对应的内容
1
2
3
|
>>> xpleaf[ 'hobby' ] = 'IT' >>> xpleaf { 'hobby' : 'IT' , 'dream' : 'excellent hacker' , 'name' : 'xpleaf' , 'occupation' : 'student' } |
--添加一个键值对
1
2
3
|
>>> xpleaf[ 'girlfriend' ] = 'none' >>> xpleaf { 'girlfriend' : 'none' , 'hobby' : 'IT' , 'dream' : 'excellent hacker' , 'name' : 'xpleaf' , 'occupation' : 'student' } |
·添加的元素在字典中的排序是随机的,因为索引号对字典没有意义(按照哈希值进行value值的查找);
2.has_key()函数
·功能:接受key的查询,以bool值形式返回查询字典中是否有该key;
·演示如下:
1
2
3
4
|
>>> xpleaf.has_key( 'dream' ) True >>> xpleaf.has_key( 'wife' ) False |
3.items()函数
·功能:将字典转换为列表,列表的元素为元组,其中左元素为key,右元素为value;
·演示如下:
1
2
|
>>> xpleaf.items() [( 'girlfriend' , 'none' ), ( 'hobby' , 'IT' ), ( 'dream' , 'excellent hacker' ), ( 'name' , 'xpleaf' ), ( 'occupation' , 'student' )] |
·基于上述输出形式,可对字典的key和value进行遍历,如下:
1
2
3
4
5
6
7
8
|
>>> for key,value in xpleaf.items(): ... print key,value ... girlfriend none hobby IT dream excellent hacker name xpleaf occupation student |
·item()函数的原理是把字典转换为列表存储在内存中,对于数据量大的情况下,会比较慢;
·大数据量的字典遍历方法:
1
2
3
4
5
6
7
8
|
>>> for key in xpleaf: ... print key,xpleaf[key] ... girlfriend none hobby IT dream excellent hacker name xpleaf occupation student |
4.get()函数
·功能:取对应key的value值;
·演示如下:
1
2
3
4
5
6
|
>>> xpleaf { 'girlfriend' : 'none' , 'hobby' : 'IT' , 'dream' : 'excellent hacker' , 'name' : 'xpleaf' , 'occupation' : 'student' } >>> xpleaf. get ( 'dream' ) 'excellent hacker' >>> xpleaf. get ( 'wife' ) ===>如果没有该key值则不会有输出 >>> |
·即相当于dict[key]的方法取value值;
5.keys()函数
·功能:取出字典中的key值,并生成相应的列表;
·演示如下:
1
2
|
>>> xpleaf.keys() [ 'girlfriend' , 'hobby' , 'dream' , 'name' , 'occupation' ] |
5.pop()函数
·功能:弹出一个key,即删除一个键值对;
·演示如下:
1
2
3
4
5
6
|
>>> xpleaf { 'girlfriend' : 'none' , 'hobby' : 'IT' , 'dream' : 'excellent hacker' , 'name' : 'xpleaf' , 'occupation' : 'student' } >>> xpleaf.pop( 'girlfriend' ) 'none' >>> xpleaf { 'hobby' : 'IT' , 'dream' : 'excellent hacker' , 'name' : 'xpleaf' , 'occupation' : 'student' } |
6.popitem()函数
·功能:按顺序删除字典中的元素;
·演示如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
>>> a { 'a' : 1 , 'c' : 3 , 'b' : 2 , 'e' : 5 , 'd' : 4 , 6 : 'f' } >>> a.popitem() ( 'a' , 1 ) >>> a.popitem() ( 'c' , 3 ) >>> a.popitem() ( 'b' , 2 ) >>> a.popitem() ( 'e' , 5 ) >>> a.popitem() ( 'd' , 4 ) >>> a.popitem() ( 6 , 'f' ) |
7.setdefault()函数
·在字典中添加元素,如果原来存在该元素,则不进行任何修改;
·演示如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
>>> xpleaf { 'hobby' : 'IT' , 'dream' : 'excellent hacker' , 'name' : 'xpleaf' , 'occupation' : 'student' } >>> xpleaf.setdefault( 'hobby' , 'computer' ) ===> 'hobby' 键值对已经存在,不会添加 'IT' >>> xpleaf { 'hobby' : 'IT' , 'dream' : 'excellent hacker' , 'name' : 'xpleaf' , 'occupation' : 'student' } >>> xpleaf.setdefault( 'weight' , '55kg' ) ===> 'weight' 键值对不存在,会进行添加 '55kg' >>> xpleaf { 'name' : 'xpleaf' , 'weight' : '55kg' , 'hobby' : 'IT' , 'dream' : 'excellent hacker' , 'occupation' : 'student' } >>> xpleaf.setdefault( 'wife' ) ===>添加没有的键值对, >>> xpleaf { 'name' : 'xpleaf' , 'weight' : '55kg' , 'wife' : None, 'hobby' : 'IT' , 'dream' : 'excellent hacker' , 'occupation' : 'student' } |
8.update()函数
·功能:合并两个字典
·演示如下:
1
2
3
4
5
6
7
8
9
|
>>> a { 'a' : 1 , 'c' : 3 , 'b' : 2 } >>> b { 'e' : 4 , 'g' : 6 , 'f' : 5 } >>> a.update(b) >>> a { 'a' : 1 , 'c' : 3 , 'b' : 2 , 'e' : 4 , 'g' : 6 , 'f' : 5 } >>> b { 'e' : 4 , 'g' : 6 , 'f' : 5 } |
·合并的顺序依然是随机的,原理与前面一样;
·更新的只是字典a,字典b没有变化;
·如果合并字典时有重复的item项,则会进行覆盖:
1
2
3
4
5
6
7
|
>>> a { 'a' : 1 , 'c' : 3 , 'b' : 2 , 'e' : 4 , 'g' : 6 , 'f' : 5 } >>> c { 'b' : 'cover2' , 'g' : 'cover1' } >>> a.update(c) >>> a { 'a' : 1 , 'c' : 3 , 'b' : 'cover2' , 'e' : 4 , 'g' : 'cover1' , 'f' : 5 } |
9.values()函数
·功能:取字典中所有key的value值,并生成相应的列表
·演示如下:
1
2
3
4
|
>>> xpleaf { 'name' : 'xpleaf' , 'weight' : '55kg' , 'wife' : None, 'hobby' : 'IT' , 'dream' : 'excellent hacker' , 'occupation' : 'student' } >>> xpleaf.values() [ 'xpleaf' , '55kg' , None, 'IT' , 'excellent hacker' , 'student' ] |
·多用在value值的数据类型都相同的字典中,以用于数据的批量分析;
10.clear()函数
·功能:清空字典的item项
·演示如下:
1
2
3
4
5
|
>>> a { 'a' : 1 , 'c' : 3 , 'b' : 'cover2' , 'e' : 4 , 'g' : 'cover1' , 'f' : 5 } >>> a.clear() >>> a {} |
·与del不同,del是直接删除字典:
1
2
3
4
5
|
>>> del a >>> a Traceback (most recent call last): File "<stdin>" , line 1 , in <module> NameError: name 'a' is not defined |
11.copy()函数
·功能:对字典进行浅复制;
·Python中普通情况下的“复制”:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
>>> xpleaf { 'name' : 'xpleaf' , 'weight' : '55kg' , 'wife' : None, 'hobby' : 'IT' , 'dream' : 'excellent hacker' , 'occupation' : 'student' } >>> xpleaf_copy = xpleaf >>> xpleaf_copy { 'name' : 'xpleaf' , 'weight' : '55kg' , 'wife' : None, 'hobby' : 'IT' , 'dream' : 'excellent hacker' , 'occupation' : 'student' } >>> xpleaf[ 'hobby' ] = 'IT_Field' >>> xpleaf_copy { 'name' : 'xpleaf' , 'weight' : '55kg' , 'wife' : None, 'hobby' : 'IT_Field' , 'dream' : 'excellent hacker' , 'occupation' : 'student' } >>> xpleaf_copy[ 'wife' ] = 'None!!!' >>> xpleaf_copy { 'name' : 'xpleaf' , 'weight' : '55kg' , 'wife' : 'None!!!' , 'hobby' : 'IT_Field' , 'dream' : 'excellent hacker' , 'occupation' : 'student' } >>> xpleaf { 'name' : 'xpleaf' , 'weight' : '55kg' , 'wife' : 'None!!!' , 'hobby' : 'IT_Field' , 'dream' : 'excellent hacker' , 'occupation' : 'student' } |
·即将变量赋给其它变量只是将对象(实际的字典)作一个引用传递而已,修改任何一个引用都会改变原来对象的值;
·copy()的浅复制功能则不是引用传递:
1
2
3
4
5
6
7
8
|
>>> xpleaf_copy2 = xpleaf.copy() >>> xpleaf_copy2 { 'name' : 'xpleaf' , 'weight' : '55kg' , 'wife' : 'None!!!' , 'hobby' : 'IT_Field' , 'dream' : 'excellent hacker' , 'occupation' : 'student' } >>> xpleaf_copy2[ 'wife' ] = 'CL' >>> xpleaf_copy2 { 'name' : 'xpleaf' , 'weight' : '55kg' , 'wife' : 'CL' , 'hobby' : 'IT_Field' , 'dream' : 'excellent hacker' , 'occupation' : 'student' } >>> xpleaf { 'name' : 'xpleaf' , 'weight' : '55kg' , 'wife' : 'None!!!' , 'hobby' : 'IT_Field' , 'dream' : 'excellent hacker' , 'occupation' : 'student' } |
·当然copy()更重要的作用不仅在于此,这里只是简单提及它的作用。
python-字典(第二篇(四):字典)的更多相关文章
- Python人工智能第二篇:人脸检测和图像识别
Python人工智能第二篇:人脸检测和图像识别 人脸检测 详细内容请看技术文档:https://ai.baidu.com/docs#/Face-Python-SDK/top from aip impo ...
- Python【第二篇】运算符及优先级、数据类型及常用操作、深浅拷贝
一.运算符及优先级 Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 1.算数运算符 运算符 描述 实例,a=20,b=10 + 加 a+b输出结果30 - 减 a-b输出结果 ...
- Python人工智能第二篇
Python人工智能之路 - 第二篇 : 现成的技术 预备资料: 1.FFmpeg: 链接:https://pan.baidu.com/s/1jonSAa_TG2XuaJEy3iTmHg 密码:w ...
- Python开发第二篇
运算符 1.算术运算符 % 取余运算符,返回余数 ** 幂运算符 //返回商的整数部分 2.逻辑运算符 and 与运算符 a and b 如果a为False是,表达式为False,如果a为True返 ...
- python 【第二篇】python基本数据类型
python数据类型 python的数据类型和大多数编程语言一样,有int,float,long,string但是python有三个特殊的数据类型:列表,元组,字典 如果不知道你的数据类型有什么方法: ...
- python【第二篇】列表、元组、字典及文件操作
本节内容 列表 元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1.列表 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作:列表有序.可变.元素 ...
- Python强化训练笔记(四)——字典的排序
假如有学生成绩以字典顺序排列:{'Tom': 87, 'Jack': 90, 'Rose': 100.....} 想要根据学生的成绩来进行排序,可以考虑使用sorted函数.但是sorted函数用在字 ...
- 【python自动化第二篇:python入门】
内容概览 模块 python运行过程 基本数据类型(数字,字符串) 序列类型(列表,元组,字典) 模块使用 模块我们可以把它想象成导入到python以增强其功能的一种拓展.需要使用import来导入模 ...
- [Python笔记]第二篇:运算符、基本数据类型
本篇主要内容有:运算符 基本数据类型等 一.运算符 1.算术运算 2.比较运算 3.赋值运算 4.逻辑运算 5.成员运算 6.身份运算 7.位运算 8.运算符优先级 二.基本数据类型 1.整数:int ...
- 图解Python 【第二篇】:Python基础2
本节内容一览图 一.数据类型 1.数字 2 是一个整数的例子.长整数 不过是大一些的整数.3.23和52.3E-4是浮点数的例子.E标记表示10的幂.在这里,52.3E-4表示52.3 * 10-4. ...
随机推荐
- Struts_json插件配置参数
Struts中使用json需要在struts基础上加上几个包:(这里只列出了重要的几个) commons-lang-2.4.jar: jsonplugin-0[1].32.jar: 下面是配置文件中的 ...
- spm使用之三spm应用实例
spm 的init实际上是调用了grunt这个工具来实现一些交互式的提问和数据的获取. 看看npm就知道, npm有个命令叫init, 就是一样的交互式提问获取你要创建的nodejs的模块信息. sp ...
- 浅谈JS DDoS攻击原理与防御
分布式拒绝服务攻击(DDoS)攻击是一种针对网站发起的最古老最普遍的攻击.Nick Sullivan是网站加速和安全服务提供商CloudFlare的一名系统工程师.近日,他撰文介绍了攻击者如何利用恶意 ...
- 李洪强iOS开发之-环信01_iOS SDK 前的准备工作
李洪强iOS开发之-环信01_iOS SDK 前的准备工作 1.1_注册环信开发者账号并创建后台应用 详细步骤: 注册并创建应用 注册环信开发者账号 第 1 步:在环信官网上点击“即时通讯云”,并点 ...
- 通过使用CyclicBarrier来计算Matrix中最大的值
import java.util.Random; import java.util.concurrent.CyclicBarrier; import java.util.concurrent.Exec ...
- 嵌入式C语言头文件的建立与使用
如何正确编写 C 语言头文件和与之相关联的 c 源程序文件,这首先就要了解它们的各自功能. 要理解 C 文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程. 一般说来编译器会做以下几 ...
- 基本数据类型的常量池与String类型常量池解析
抛出样例: Integer a1 = new Integer(123); Integer a2 = new Integer(123); System.out.print ...
- bzoj2597
非常好的网络流题目 首先这里用到了求补集的思想,我们可以先求不满足的三元对的情况 设A-->B代表A赢B 由于最后所有胜负关系都确定,一定是一个完全图,所以任意一个不合法的三元对,单独取出来一定 ...
- WordPress Simple Login Registration插件’username‘参数跨站脚本漏洞
漏洞名称: WordPress Simple Login Registration插件’username‘参数跨站脚本漏洞 CNNVD编号: CNNVD-201308-519 发布时间: 2013-0 ...
- Light OJ 1050 - Marbles(概率DP)
题目大意: 一个包裹里有蓝色和红色的弹珠,在这个包裹里有奇数个弹珠,你先走, 你先从背包里随机的拿走一个弹珠,拿走每个弹珠的可能性是一样的.然后Jim从背包里拿走一个蓝色的弹珠,如果没有蓝色的弹珠让J ...