字典常用方法

copy() 返回一个字典的浅复制

示例:浅拷贝d.copy()

   深拷贝引入import copy   copy.deepcopy()

 >>> help(dict.copy)  #help()查看dict.copy的详细内容
Help on method_descriptor: copy(...)
D.copy() -> a shallow copy of D #字典d的浅拷贝 >>> d ={"name":"python","web":"www.baidu.com"}
>>> e =d
>>> e
{'web': 'www.baidu.com', 'name': 'python'}
>>> d
{'web': 'www.baidu.com', 'name': 'python'}
>>> id(e)
49259112L
>>> id(d) #可以看出e和d在内存中地址相同,e和d引用的是同一个对象
49259112L
>>> f=d.copy() #字典d的浅复制
>>> f
{'web': 'www.baidu.com', 'name': 'python'}
>>> id(f) #可以看出f与上面的e和d的内存地址不同,f创建了新的字典对象
13708552L
>>> d["lang"]="python" #向字典d中添加一个对象,d中发生了变化,字典f并没有收到影响,说明字典f是一个新的字典对象,d 和f 是两个不同的对象
>>> d
{'lang': 'python', 'web': 'www.baidu.com', 'name': 'python'}
>>> f
{'web': 'www.baidu.com', 'name': 'python'}
>>> d={"name":"zhangsan","enjoy":["python","tea","book"]} #新建一个字典
>>> e =d.copy() #对字典进行copy
>>> id(d),id(e)  #看出他俩的内存地址不同,是两个不同的对象
(13708280L, 13719208L)
>>> d["enjoy"] #从字典d中取出enjoy所对应的列表的值
['python', 'tea', 'book']
>>> d["enjoy"].remove("book") #将字典d中key为enjoy,值为book的元素移除
>>> d #d 中的book已经被移除
{'enjoy': ['python', 'tea'], 'name': 'zhangsan'}
>>> e #e中的book也被移除了
{'enjoy': ['python', 'tea'], 'name': 'zhangsan'}
>>> id(d["enjoy"]) #查看d['enjoy']的内存地址 与e['enjoy']的内存地址相同,说明是同一对象,copy只进行了浅拷贝,并没有对enjoy列表进行拷贝,只是引用
49135752L
>>> id(e["enjoy"])
49135752L
>>> import copy #引入copy模块进行 深拷贝
>>> d
{'enjoy': ['python', 'tea'], 'name': 'zhangsan'}
>>> z =copy.deepcopy(d) #深拷贝
>>> z
{'enjoy': ['python', 'tea'], 'name': 'zhangsan'}
>>> id(d),id(z) #可看出d和z 是不同的两个对象
(13708280L, 13720296L)
>>> id(d['enjoy']),id(z['enjoy']) #可看出d['enjoy']和z['enjopy'] 内存地址不同,是两个不同对象
(49135752L, 50109128L)

clear() 删除字典内所有元素

  clear是清除字典中的元素,不是把这个字典删除,

  删除字典需要用del

  清空字典也可用e={}

 >>> help(dict.clear)
Help on method_descriptor: clear(...)
D.clear() -> None. Remove all items from D. #删除字典中的所有元素 >>> z
{'enjoy': ['python', 'tea'], 'name': 'zhangsan'}
>>> z.clear() #清除字典z中的元素
>>> z #字典中的元素为空,字典存在,没有删除字典
{}
>>> del z #删除字典可用del
>>> e
{'enjoy': ['python', 'tea'], 'name': 'zhangsan'}
>>> e ={} #清空字典中的元素可以使用e={}
>>> e
{}
>>>

get()  返回指定键的值,如果值不在字典中返回default值

 >>> help(dict.get)
Help on method_descriptor: get(...)
D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None. 如果k存在于d中则返回key所对应的值,否则默认返回None >>> d = {"enjoy":["python","tea"],"name":"zhangsan"}
>>> d
{'enjoy': ['python', 'tea'], 'name': 'zhangsan'}
>>> d.get("name") #返回指定键name,所对应的值
'zhangsan'
>>> d.get("enjoy") #返回指定键enjoy,所对应的值
['python', 'tea']
>>> d["name"] #这种方式也可以获取,与d.get()的区别,就是如果字典中没有key值,将会报错keyError 如下示例
'zhangsan'
>>> d.get("teacher") #如果d.get("teacher")不存在则返回默认值none
>>> d.get("teacher","laoshi") #如果d.get("teacher")不存在,则返回后面的值
'laoshi'
>>> d["teacher"]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'teacher'
>>>

setdefault() 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default

 >>> help(dict.setdefault)
Help on method_descriptor: setdefault(...)
D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D >>> d
{'enjoy': ['python', 'tea'], 'name': 'zhangsan'}
>>> d.setdefault("name") #取出d中key为name的值
'zhangsan'
>>> d.setdefault("city","beijing") #city 不存在与字典中,则将city添加与字典中,city为key,beijing为value
'beijing'
>>> d
{'enjoy': ['python', 'tea'], 'city': 'beijing', 'name': 'zhangsan'}
>>> d.setdefault("teacher") #teacher 不存在于字典中,则将teacher 作为key,value为none加入字典中
>>> d
{'enjoy': ['python', 'tea'], 'city': 'beijing', 'name': 'zhangsan', 'teacher': None}
>>>

items() 以列表返回可遍历的(键, 值) 元组数组

iteritems() 与items()方法类似,返回的是一个迭代器

 >>> help(dict.items)
Help on method_descriptor: items(...)
D.items() -> list of D's (key, value) pairs, as 2-tuples #通过字典items方法得到的是含有字典key value元组为元素的列表 >>> d
{'enjoy': ['python', 'tea'], 'city': 'beijing', 'name': 'zhangsan', 'teacher': None}
>>> d.items() #得到key、value元组为元素的列表
[('enjoy', ['python', 'tea']), ('city', 'beijing'), ('name', 'zhangsan'), ('teacher', None)]
>>> help(dict.iteritems)
Help on method_descriptor: iteritems(...)
D.iteritems() -> an iterator over the (key, value) items of D >>> d_iter=d.iteritems()
>>> type(d_iter)
<type 'dictionary-itemiterator'>
>>> d_iter
<dictionary-itemiterator object at 0x00000000013EDD68>
>>> list(d_iter)
[('enjoy', ['python', 'tea']), ('city', 'beijing'), ('name', 'zhangsan'), ('teacher', None)]
>>>

keys() 以列表返回一个字典所有的键

iterkeys()

 >>> help(dict.keys)
Help on method_descriptor: keys(...)
D.keys() -> list of D's keys #用这个方法,得到一个列表,这个列表是以字典key为元素来组成的 >>> d
{'enjoy': ['python', 'tea'], 'city': 'beijing', 'name': 'zhangsan', 'teacher': None}
>>> d.keys() #得到字典中所有的key
['enjoy', 'city', 'name', 'teacher']
>>> d.iterkeys() #迭代器
<dictionary-keyiterator object at 0x00000000013EDE58>
>>>

values() 以列表返回字典中的所有值

itervalues()

 >>> d.values()  #得到字典value的列表
[['python', 'tea'], 'beijing', 'zhangsan', None]
>>> d.itervalues() #迭代器
<dictionary-valueiterator object at 0x00000000013EDE58>
>>>

pop()    删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。

 >>> help(dict.pop)
Help on method_descriptor:
#参数至少有一个key,相应着会返回一个字典中key所对应的value.
  #如果字典中没有key,就返回第二个参数d的值,但如果d的值不写,就会报错
pop(...)
D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
If key is not found, d is returned if given, otherwise KeyError is raised >>> d
{'enjoy': ['python', 'tea'], 'city': 'beijing', 'name': 'zhangsan', 'teacher': None}
>>> d.pop("enjoy")#删除enjoy键值对,返回的是enjoy对应的value值
['python', 'tea']
>>> d
{'city': 'beijing', 'name': 'zhangsan', 'teacher': None}
>>> d.pop("enjoy","python") #在字典d中已经没有enjoy这个键值对,返回第二个参数python
'python'
>>>

popitem()  随机返回并删除字典中的一对键和值。

 >>> help(dict.popitem)
Help on method_descriptor: popitem(...)
D.popitem() -> (k, v), remove and return some (key, value) pair as a
2-tuple; but raise KeyError if D is empty. >>> d
{'city': 'beijing', 'name': 'zhangsan', 'teacher': None}
>>> d.popitem() #返回删除的键值对,每次只能删除一个,且是随机删除一个键值对,如果已经没有键值对了,再去删除就会报错
('city', 'beijing')
>>> d.popitem()
('name', 'zhangsan')
>>> d.popitem()
('teacher', None)
>>> d.popitem()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'popitem(): dictionary is empty'
>>>

update ()   把字典dict2的键/值对更新到dict里

1.返回值是none

2.以字典或可迭代对象为参数

3.如果参数有keys方法,就会循环E中的k,实现D[k]=E[kj]

 >>> help(dict.update)
Help on method_descriptor: update(...)
D.update([E, ]**F) -> None. Update D from dict/iterable E and F.
If E present and has a .keys() method, does: for k in E: D[k] = E[k]
If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v
In either case, this is followed by: for k in F: D[k] = F[k] >>> d1={"lang":"python"}
>>> d2={"name":"zhangsan"}
>>> d1.update(d2)
>>> d1
{'lang': 'python', 'name': 'zhangsan'}
>>> d2
{'name': 'zhangsan'}
>>> d2.update([("city","beijing"),("web","java"),("site","baidu.com")])
>>> d2
{'site': 'baidu.com', 'city': 'beijing', 'name': 'zhangsan', 'web': 'java'}
>>>

has_key() 如果键在字典dict里返回true,否则返回false

 >>> help(dict.has_key)
Help on method_descriptor: has_key(...)
D.has_key(k) -> True if D has a key k, else False >>> d2.has_key("city") #判断key是否存在
True
>>> "city" in d2
True
>>>

Python 学习笔记(九)Python元组和字典(三)的更多相关文章

  1. Python学习笔记----列表、元组和字典的基础操作

    文章目录 一.列表的基本操作 1.1 修改列表中的某个数据 1.2 获取某个元素的返回值(返回的是索引) 1.3 在列表中插入新的元素 1.4 删除列表中的元素 1.5 +和* 二.内置的函数和方法 ...

  2. python3.4学习笔记(九) Python GUI桌面应用开发工具选择

    python3.4学习笔记(九) Python GUI桌面应用开发工具选择 Python GUI开发工具选择 - WEB开发者http://www.admin10000.com/document/96 ...

  3. Python学习笔记九

    Python学习笔记之九 为什么要有操作系统 管理硬件,提供接口. 管理调度进程,并且将多个进程对硬件的竞争变得有序. 操作系统发展史 第一代计算机:真空管和穿孔卡片 没有操作系统,所有的程序设计直接 ...

  4. python 学习笔记 9 -- Python强大的自省简析

    1. 什么是自省? 自省就是自我评价.自我反省.自我批评.自我调控和自我教育,是孔子提出的一种自我道德修养的方法.他说:“见贤思齐焉,见不贤而内自省也.”(<论语·里仁>)当然,我们今天不 ...

  5. python学习笔记:python字符串

    二.python字符串操作符 1. 对象标准类型操作符 Python对象的标准类型操作符一共就三种:对象值的比较.对象身份的比较.布尔类型.其中对象值的比较主要是大于.小于.不等于等的数学比较符:对象 ...

  6. python学习笔记(一):python简介和入门

    最近重新开始学习python,之前也自学过一段时间python,对python还算有点了解,本次重新认识python,也算当写一个小小的教程.一.什么是python?python是一种面向对象.解释型 ...

  7. python学习笔记之——python模块

    1.python模块 Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块让你能够有逻辑地组织你的 Python ...

  8. Python学习笔记 - day12 - Python操作NoSQL

    NoSQL(非关系型数据库) NoSQL,指的是非关系型的数据库.NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称.用于超大规模数据的存储.(例如 ...

  9. python 学习笔记一——Python安装和IDLE使用

    好吧,一直准备学点啥,前些日子也下好了一些python电子书,但之后又没影了.年龄大了,就是不爱学习了.那就现在开始吧. 安装python 3 Mac OS X会预装python 2,Linux的大多 ...

  10. python学习笔记(python简史)

    一.python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum) 目前python主要应用领域: ·云计算 ·WEB开发 ·科学运算.人工智能 ·系统运维 ·金融:量化交 ...

随机推荐

  1. Hql语句转化为sql语句中文乱码问题

    刚刚学习Hql语句就出现这一的问题,百度半天终于解决了,总结一下解决的方案: 出现中文乱码最可能的原因是hibernate配置文件配置的问题 1.检查url路径是否指定字符集为UTF-8 <pr ...

  2. thinkphp的删除操作

    1.循环遍历要删除的用户的或者呀删除的文章的id值: <volist name="list" id="vo"> <tr id="si ...

  3. Live2D 博客页面添加板娘

    偶然看到了live2d,神奇的二次元呀 在页脚Html代码中添加如下代码即可: <link rel="stylesheet" type="text/css" ...

  4. 快速数组对象取值与数组映射新数组--array.map

    array.map(callback,[ thisObject]); 1.map方法的作用不难理解,“映射”嘛,也就是原数组被“映射”成对应新数组 a)array.map(()=>值); [1, ...

  5. VS code 自定义快捷输入

    本文是从简书复制的, markdown语法可能有些出入, 想看"正版"和更多内容请关注 简书: 小贤笔记 位置 ctrl+shift+p 搜索: snippets 输入类型: 比如 ...

  6. vs2010开发activex(MFC)控件/ie插件(二):js传参数

    原文:http://blog.csdn.net/yhhyhhyhhyhh/article/details/50802075  js传参数给activex控件. 过程为:js变量通过activex类的属 ...

  7. RC4 加解密

    加密解密都是这一个接口 int Rc4EncryptFile(std::string in_file_path, std::string out_file_path, const char *rc4_ ...

  8. MVC中用NPOI导出Excel相关问题

    情形1:可以直接带参数 前端页面: @.ActionLink("导出Excel", "DownLoadExcel", new { 参数名= '参数值' }, n ...

  9. TaskScheduler内幕天机解密:Spark shell案例运行日志详解、TaskScheduler和SchedulerBackend、FIFO与FAIR、Task运行时本地性算法详解等

    本课主题 通过 Spark-shell 窥探程序运行时的状况 TaskScheduler 与 SchedulerBackend 之间的关系 FIFO 与 FAIR 两种调度模式彻底解密 Task 数据 ...

  10. 查看Oracle表中的指定记录在数据文件中的位置

    查看Oracle表中的指定记录位置select rowid,user_id from sshr.xx_user where user_id=3010586 select rowid,       db ...