python字典类型实现的键值对的映射_python数据类型-映射和集合-字典
字典是python语言中唯一的映射类型,映射对象里哈希值(键,key)和指向的对象(值,value)是一对多的关系。一个字典对象是可变的,是一个容器类型,可存储任意个数的python对象,其中也可以包括其他容器类型。
1.创建字典和给字典赋值
创建字典只需要把字段赋值给一个变量,不管这个字典是否包含元素。
1 >>> dict1 ={}2 >>> dict2 = {'name':'earth', 'port':80}
或者使用工厂方法dict()来创建字典。
1 >>> fdict = dict((['x', 1], ['y', 2]))2 >>>fdict3 {'y': 2, 'x': 1}
另外可使用内建方法fromkeys()来创建一个"默认"字典,字典中元素具有相同的值(如果没有给出,默认为None)
1 >>> ddict = {}.fromkeys(('x', 'y'), -1)2 >>>ddict3 {'y': -1, 'x': -1}4 >>> edict = {}.fromkeys(('foo', 'bar'))5 >>>edict6 {'foo': None, 'bar': None}
2.访问字典中的值
遍历一个字典(一般用键),只需要循环查看它的键
1 >>> dict2 = {'name':'foo', 'port':80}2 >>> for key indict2.keys():3 ... print 'key:%s value:%s' %(key, dict2[key])4 ...5 key:name value:foo6 key:port value:80
另外可用迭代访问类序列对象(sequence-like objects),比如字典和文件,只需要用字典的名字就可以在for循环里遍历字典。
1 >>> dict2 = {'name':'foo', 'port':80}2 >>> for key indict2:3 ... print 'key:%s value:%s' %(key, dict2[key])4 ...5 key:name value:foo6 key:port value:80
需要得到字典中某个元素的值,在字典键加上中括号得到。
1 >>> dict2 = {'name':'foo', 'port':80}2 >>> dict2['name']3 'foo'
3.更新字典
有以下方式:添加一个新数据项或新元素(即,一个键-值对);修改一个已存在的数据项;删除一个已存在的数据项。
1 >>> dict2 = {'name':'foo', 'port':80}2 >>> dict2['name'] = 'jone'
3 >>> dict2['arch'] = 6969
4 >>>dict25 {'arch': 6969, 'name': 'jone', 'port': 80}6 >>> del dict2['name']7 >>>dict28 {'arch': 6969, 'port': 80}9 >>>dict2.clear()10 >>>dict211 {}12 >>> deldict213 >>>dict214 Traceback (most recent call last):15 File "", line 1, in
16 NameError: name 'dict2' is notdefined17 >>> dict2 = {'name':'foo', 'port':80}18 >>> dict2.pop('name') #删除并返回键为"name"的条目
19 'foo'
20 >>>dict221 {'port': 80}
4.字典的键
不允许一个键对应多个值:一个键对应多个值是不允许的(像列表、元组和其它字典这样的容器是可以的)。当有键发生冲突(即字典键重复赋值),取最后的赋值;
键必须是可哈希的:所有不可变类型都是可哈希的,值相同的数字表示相同的键(例如1和1.0)。
5.映射类型操作符
5.1.标准类型操作符
=、<、>、and
5.2.字典的键查找操作符([])
键查找操作符仅用于字典类型的操作符,用键查询,键是参数
d[k] = v 通过键"k",给字典中某个元素赋值"v"
d[k] 通过键"k",查询字典中某个元素的值。
5.3.(键)成员关系操作(in,not in)
类似于has_key()方法
1 >>> 'name' indict22 True
6.映射类型的内建函数和工厂函数
6.1.标准类型函数(type()、str()和cmp())
type():对字典调用type()工厂方法,返回字典类型""
str():返回字典的字符串表示
cmp():首先比较字典的大小,然后是键,最后是值。
6.2.映射类型相关函数
dict():用来创建字典,如果不提供参数,生成空字典;如果参数是可迭代的(一个序列,或一个迭代器,或一个支持迭代的对象),那每个可迭代的元素必须成对出现。在每个值对中,第一个元素为字典的键,第二个元素为字典的值。
1 >>>dict()2 {}3 >>> dict([['x', 1], ['y', 2]])4 {'y': 2, 'x': 1}5 >>> dict([('xy'[i-1], i) for i in range(1,3)])6 {'y': 2, 'x': 1}
len():对字典使用len(),返回所有元素(键-值对)的数目
1 >>> dict2 = {'a':1, 'b':2}2 >>>len(dict2)3 2
hash():判断某个对象是否可以作为一个字典的键,将一个对象作为参数传递给hah(),返回这个对象的哈希值,只有这个对象是可哈希的,才可以作为字典的键。
1 >>>hash([])2 Traceback (most recent call last):3 File "", line 1, in
4 TypeError: unhashable type: 'list'
5 >>>hash(())6 3527539
6.3.映射类型内建方法
keys():返回一个列表,包含字典中所有的键;
values():返回一个列表,包含字典中所有的值;
items():返回一个包含所有(键-值)元组的列表。
1 sorted():2 {'a': 1, 'c': 2, 'b': 3}3 >>> for ek insorted(dict1):4 ... print 'key:', ek, 'value:', dict1[ek]5 ...6 key: a value: 1
7 key: b value: 3
8 key: c value: 2
update():将一个字典的内容添加到另一个字典中,字典中原有的键如果与新添加的键重复,那么重复键所对应的原有条目将被新键所对应的值覆盖。
1 >>>dict12 {'a': 1, 'c': 2, 'b': 3}3 >>> dict2 = {'b':3, 'd':5}4 >>>dict1.update(dict2)5 >>>dict16 {'a': 1, 'c': 2, 'b': 3, 'd': 5}7 >>>
copy():返回一个字典的副本,浅复制。
setdefault():检查字典中是否含有某键,如果字典中这个键存在,可以取到它的值,如果键在字典中不存在,可以给这个键赋默认值并返回此值。
1 >>> mdict = {'host':'zheng', 'port':80}2 >>> mdict.setdefault('prot', 'tcp')3 'tcp'
4 >>> mdict.setdefault('port', '8080')5 80
6 >>>mdict.items()7 [('host', 'zheng'), ('prot', 'tcp'), ('port', 80)]8 >>>
附录:映射类型内建方法
方法名字
操作
dict.clear()
删除字典中所有的元素
dict.copy()
返回字典(浅复制)的一个副本
dict.fromkeys(seq, val=None)
创建并返回一个新字典,以seq中的元素作为该字典的键,val作为该字典中所有键对应的初始值,如果不提供此值,则默认为None
dict.get(key, default=None)
对字典dict中的键key,返回它对应的值value,如果字典中不存在此键,则返回default的值(参数default默认为None)
dict.has_key(key)
如果键在字典中存在,返回True,否则返回False,等价于in、not in操作符
dict.items()
返回一个包含字典中键、值对元组的列表
dict.keys()
返回一个包含字典中键的列表
dict.iter()
方法iteritems()、iterkeys()、itervalues()与它们对应的非迭代方法一样,不同的是他们返回一个子迭代,而不是一个列表
dict.pop(key[, default])
和get()方法类似,如果字典中key键存在,删除并返回dict[key],如果key键不存在,且没有给出default的值,则引发KeyError异常
dict.setdefault(key, default=None)
和方法set()类似,但如果字典中不存在key键,则由dict[key]=default为它赋值
dict.update(dict2)
将字典dict2的键值对添加到字典dict
dict.values()
返回一个包含字典中所有值的列表
python字典类型实现的键值对的映射_python数据类型-映射和集合-字典相关推荐
- python字典怎么添加值_python字典中如何添加键值对
添加键值对 首先定义一个空字典 1 >>> dic={} 直接对字典中不存在的key进行赋值来添加 1 2 3 >>> dic['name']='zhangsan' ...
- python 如何定义空字典_python字典中如何添加键值对
添加键值对 首先定义一个空字典 1 >>> dic={} 直接对字典中不存在的key进行赋值来添加 1 2 3 >>> dic['name']='zhangsan' ...
- 【笔记】python的遍历字典:遍历所有键值对(方法items())、遍历字典中的所有键(方法keys())、按特定顺序遍历字典中的所有键、遍历字典中的所有值(方法values())、函数set()
文章目录 一.python的遍历字典 二.遍历所有键值对(方法items()) 三.遍历字典中的所有键(方法keys()) 四.按特定顺序遍历字典中的所有键 五.遍历字典中的所有值(方法values( ...
- jsonpath:从庞大的接口返回结果(返回结果为字典类型)中取字段值
从庞大的接口返回结果(返回结果为字典类型)中取字段值,返回结果是list s = {"ec": 0, "errcode": 0, "em": ...
- 字典删除多个键值对方法_Life is short,you need Python——Python序列(元组、字典、集合)...
一.元组 tuple 列表属于可变序列,可以任意修改列表中的元素. 元组属于不可变序列,不能修改元组中的元素.因此,元组没有增加元素.修改元素.删除元素相关的方法. 下面只介绍元组的创建和删除,元组中 ...
- python中字典的键是唯一的吗_python 零散记录(四) 强调字典中的键值唯一性 字典的一些常用方法...
dict中键只有在值和类型完全相同的时候才视为一个键: mydict = {1:1,'':1} #此时mydict[1] 与 mydict['1']是两个不同的键值 dict的一些常用方法: clea ...
- python字典返回键值对_从Python字典对象中提取键值对的子集?
好吧,这件事让我困扰了几次,所以谢谢你Jayesh的提问. 上面的答案看起来像任何一个好的解决方案,但如果你在你的代码中使用这个,那么包装功能恕我直言是有意义的. 此外,这里有两种可能的用例:一种是您 ...
- python读取配置文件获取所有键值对_python笔记14-读取yaml配置文件(pyyaml)
yaml简介 1.yaml [ˈjæməl]: Yet Another Markup Language :另一种标记语言.yaml 是专门用来写配置文件的语言,非常简洁和强大,之前用ini也能写配置文 ...
- python读取配置文件获取所有键值对_python ConfigParser模块读写配置文件
python2.7中ConfigParser模块对配置文件的读写操作. 一.ConfigParser模块的函数 1.读取 read(filename) 直接读取ini文件内容 sections() 得 ...
最新文章
- Spring整合rabbitmq---消息接收
- dfs-Rank the Languages
- 【安装MongoDB】CentOS7 下安装NodeJs+Express+MongoDB+Redis
- apache2.4配置虚拟主机
- VTK:多行文本用法实战
- 同时买票是怎么实现的_腰包怎么背才更新潮?教你3种时尚背法,告别土味老气风...
- mysql的索引和触发器_MYSQL数据库学习----索引和触发器
- 小榕密码管家xp 绿色
- windows2012 下载启动ssh
- mysql 初始化序列_GitHub - IMAUZS/seq: 基于mysql的序列号生成器
- 前端开发常用哪些工具软件?
- List异常报错:list All elements are null
- 计算机符号大写怎么退出,如何输入数字,字母 和 回车换行符,大写字母锁定输入模式怎么退出...
- android控件显示在最上层,「总是可见的时钟和备忘录」永远显示在屏幕最上层的贴心助手(Android)...
- 青龙扩展--九章头条
- 【开发】开源的网络攻防黑客游戏d0x3d
- Nexus私服 3 - 更新索引
- Testlink配置设置(参考文章)
- 算法的时间与空间复杂度介绍
- MATLAB Support Package for USB Webcams 的使用方法(MATLAB调用摄像头后的使用方法)