访问字典的值

字典中的 键/值 实际上就是一种映射关系,只要知道了 “键”,就肯定知道 “值”。

>>> my_dict = dict(name = 'zhangsan',other = 'lisi')
>>> my_dict['other']
'lisi'

所以字典中的 “键” 是多么的好用,通过它可以查找值,可以添加值,可以改变值。

既然字典是一种映射关系,所以在字典里也就不需要考虑排序的问题,只要有了 “键” 就可以知道 “值”,那么键 / 值对的位置在哪里也就不需要考虑了,如果你仔细看过上面的例子,你就会发现添加完的值在字典中的显示并不按照它的添加顺序。又因为没有了排序,所以在字典中也没有索引,所以就不存在索引 & 切片。

字典这种键 / 值对的方式存储数据是一种非常高效的方法,查找速度超快,相同的,如果你要在列表中查找一个值,需要从头开始一个个的找,直到找到了指定的索引值,但是在字典中,直接就可以通过 “键” 找到 “值”,小规模数据的时候这种好处可能不显,当存储大规模数据的时候,这种好处是相当明显的。

字典的基本操作

下面我用一些实例来依次演示字典中的基本操作:

>>> my_dict = {'name':'rocky','like':'python','age':23}
>>> len(my_dict) #返回字典中键 / 值对的数量
3
>>> my_dict['age'] #返回字典中的键值
23
>>> my_dict['like'] = 'C ++' #改变字典中的键值
>>> my_dict
{'age': 23, 'name': 'rocky', 'like': 'C ++'}
>>> del my_dict['like'] #删除指定的键 / 值对
>>> my_dict
{'age': 23, 'name': 'rocky'}
>>> 'like' in my_dict #检查字典中是否含有指定键的项
False

字典的方法

与前面所讲述的其它对象类型相似,字典这个对象类型也有一些能够实现对其操作的方法。

1.clear

clear 清除字典中所有的元素,得到的是空的字典。

>>> my_dict = {'name':'rocky','like':'python'}
>>> my_dict.clear()
>>> my_dict
{}
>>> del my_dict
>>> my_dict
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'my_dict' is not defined

上面的例子我们可以看出 clear 和 del 的区别很大,clear 是将字典清空,得到空字典,而 delete 是将字典删除,直接从内存中去掉。

2. get & setdefault

这两个是跟键 / 值对相关的方法,get 方法就是要得到字典中某个 “键” 的 “值”,那么这就有人要说,不是上面的时候我们已经讲过直接查就行吗?在这里的 get 和之前说的还不太一样,这里的 get 稍微宽松一些,如果想要查的值不存在,get 不会有啥反应,而之前说的方法会报错。

>>> my_dict = {'name':'rocky','like':'python'}
>>> my_dict.get('name')
'rocky'
>>> my_dict.get('age')
>>> my_dict['age']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'age'

setdefault 也是用来查找字典中某个 “键” 的 “值”,如果查找的 “键” 存在的话就正常输出,如果不存在的话,就在字典中加入这个键 / 值对。

>>> my_dict = {'name':'rocky','like':'python'}
>>> my_dict.setdefault('like')
'python'
>>> my_dict.setdefault('age','')
''
>>> my_dict
{'name': 'rocky', 'like': 'python', 'age': ''}

3.items & keys & values

这是字典的 3 个方法,它们之间有相似之处,很简单,请看下面的实例:

>>> my_dict = {'name':'rocky','like':'python'}
>>> my_d = my_dict.items()
>>> my_d
dict_items([('name', 'rocky'), ('like', 'python')])
>>> my_k = my_dict.keys()
>>> my_k
dict_keys(['name', 'like'])
>>> my_v = my_dict.values()
>>> my_v
dict_values(['rocky', 'python'])

4.pop & popitem

pop 和 popitem 是字典中的删除操作。

pop 是以字典的 “键” 为参数,删除指定的键 / 值对,pop 中的参数不能省略且如果删除字典中没有的键 / 值对,会报错。

>>> my_dict = {'name':'rocky','like':'python'}
>>> my_dict.pop('name')
'rocky'
>>> my_dict
{'like': 'python'}
>>> my_dict.pop()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: pop expected at least 1 arguments, got 0
>>> my_dict.pop('age')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'age'

popitem 和 pop 有相似之处,但是 popitem 不用写参数,但是它删除的不是最后一个,因为我们说过字典没有顺序,所以 popitem 是随机删除一个,至于删除谁,完全看命。

5.update

update 就是更新字典,参数可以是字典或者某种可迭代的对象,至于什么是可迭代这里你可以先知道这么个词,之后我们会说到,它的返回值是 None,你也可以理解成没有返回值。

>>> my_dict = {'name':'rocky','like':'python'}
>>> first = {'age':23}
>>> my_dict.update(first)
>>> my_dict
{'name': 'rocky', 'like': 'python', 'age': 23}
>>> first
{'age': 23}

Python 字典方法的更多相关文章

  1. python字典方法

    本文参考自<python基础教程 (第二版)> 操作 语法 举例 结果 建立字典 dict() 1.以关键字参数建立字典 2.以其他映射作为参数建立字典 1.d = dict(name=' ...

  2. Python字典方法总结

    1.清空字典中元素清空,dict变为{} L.clear()-> None.  Remove all items from L 1 2 3 4 >>> L ={'shaw':2 ...

  3. Python字典方法copy()和deepcopy()的区别

    from copy import deepcopy # import deepcopy模块 d = {} d['name'] = ['black', 'guts'] # d = {'name': [' ...

  4. python字典copy()方法

    python 字典的copy()方法表面看就是深copy啊,明显独立 d = {'a':1, 'b':2} c = d.copy() print('d=%s c=%s' % (d, c)) Code1 ...

  5. Python 字典(Dictionary) get()方法

    描述 Python 字典(Dictionary) get() 函数返回指定键的值,如果值不在字典中返回默认值. 语法 get()方法语法: dict.get(key, default=None) 参数 ...

  6. Python 字典(Dictionary) setdefault()方法

    描述 Python 字典(Dictionary) setdefault() 函数和get()方法类似, 如果键不已经存在于字典中,将会添加键并将值设为默认值. 语法 setdefault()方法语法: ...

  7. python 字典内置方法get应用

    python字典内置方法get应用,如果我们需要获取字典值的话,我们有两种方法,一个是通过dict['key'],另外一个就是dict.get()方法. 今天给大家分享的就是字典的get()方法. 这 ...

  8. Python 字典(Dictionary) has_key()方法

    描述 Python 字典(Dictionary) has_key() 函数用于判断键是否存在于字典中,如果键在字典dict里返回true,否则返回false. 语法 has_key()方法语法:dic ...

  9. Python 字典 fromkeys()方法

    Python 字典 fromkeys() 方法用于创建一个新的字典,并以可迭代对象中的元素分别作为字典中的键,且所有键对应同一个值,默认为None. fromkeys() 方法语法: 1 dict.f ...

随机推荐

  1. sqlserver 2008R2新建数据库时报错,提示无法获得数据库"model"上的排它锁

    刚新装了个sqlserver2008 R2,在建立数据库时候报错,提示无法获得数据库"model"上的排它锁.解决办法如下: 打开查询页面,执行下面的语句即可. use maste ...

  2. Java 控制类的引用类型,合理使用内存

    Java提供了 java.lang.ref包,该包下的类均与垃圾回收机制相关 先介绍Java对象的集中引用类型 1.强引用 强引用是最常见的,创建对象就是强引用,如 String a = new St ...

  3. MessageChannel 消息通道

    一.初识 MessageChannel 对象 通过构造函数 MessageChannel() 可以创建一个消息通道,实例化的对象会继承两个属性:port1 和 port2 port1 和 port2 ...

  4. angular select2 下拉单选和多选的取值赋值

    官网:http://select2.github.io/examples.html 兼容性: 引入文件 /select2.min.js /select2.min.css html <select ...

  5. js的map遍历和array遍历

    1. array遍历: [1].forEach() forEach是ES5中操作数组的一种方法,主要功能是遍历数组.forEach方法中的function回调有三个参数:第一个参数是遍历的数组内容,第 ...

  6. sublime text2 中标签高亮效果BracketHighlighter插件

    1.打开package Control,选择install Package 2.输入BracketHighlighter,回车 3.这样该插件会自动安装,安装后所有的提示高亮都是白色或没有提示.按 p ...

  7. Java Filter防止sql注入攻击

    原理,过滤所有请求中含有非法的字符,例如:, & < select delete 等关键字,黑客可以利用这些字符进行注入攻击,原理是后台实现使用拼接字符串,案例:某个网站的登入验证的SQ ...

  8. 苹果手机如何投屏到win10电脑上

    苹果手机中的IOS系统比安卓系统的确好用.苹果手机使用多久都不会出现手机卡顿的现象,一如既往的流畅自如,这就是人们追求苹果机的原因之一.苹果手机朋友们可能会觉得手机屏幕太小影响视觉怎么办,苹果手机如何 ...

  9. ajax post 提交数据和文件

    方式一:常用的方式是通过form.serialize()获取表单数据,但是,这样有个弊端,文件不能上传 $.ajax({ url:'/communication/u/', type:'POST', d ...

  10. (后端)swagger

    Swagger 文档提供了一个方法,使我们可以用指定的 JSON 或者 YAML 摘要来描述你的 API,包括了比如 names.order 等 API 信息. 你可以通过一个文本编辑器来编辑 Swa ...