python映射类型:字典---创建、更新、删除、修改等操作实例源码
2017-05-02 10:09
846 查看
#coding=utf8 ''' 字典是python语言中唯一的映射类型。 映射类型对象里哈希值(键)和指向的对象(值)是一对多的关系。 字典对象是可变的,它是一个容器类型,能存储任意个数的python对象, 其中包括其他容器类型。 字典类型和序列类型容器类(列表、元组)的区别是存储和访问数据的方式不同。 序列类型只用数字类型的键(从序列的开始起按数值顺序的索引)。 映射类型可以用其他对象类型做键;一般最常见的是用字符串做键(key)。 和序列类型的键不同,映射类型的键直接或间接地和存储的数据值相关联。 映射类型中的数据是无序排列的。 什么是哈希表?它们与字典的关系是什么? 序列类型用有序的数字键做索引键数据以数组的形式存储。 一般索引值与所存储的数据毫无关系。 哈希表中存储的每一条数据,叫做一个值,是根据与它相关的一个被称作键的数据项进行存储的。 键和值合在一起被称为"键-值 对"(key-value pairs)。哈希表的算法是获取键,对键执行一个叫做 哈希函数的操作,并根据计算的结果,选择在数据结构的某个地址中存储值。 任何一个值存储的地址皆取决于它的键。哈希表中的值是无序的数据集。 所能获得的有序集合只能是字典中的键的集合或者值的集合。 方法keys()/values()返回一个列表,该列表是可排序的。使用items()方法得到包含键、值对的元组的列表排序。 由于字典本身是哈希的,所以是无序的。 创建字典只需要把字典赋值给一个变量,不管这个字典是否包含元素: dict1={} 或者 dict1={"name":123,"456":789} 从python2.2版本起,可以用工厂方法dict()来创建字典。例如: fdictinary=dict((['x',254],[456,789])) 从python 2.3版本起,可以用一个很方便的内建方法fromkeys()来创建一个“默认”字典, 字典中元素具有相同的值(如果没有给出,默认为None): ddict={}.fromkeys(('x','y'),-5)或者不给出键值 ddict={}.fromkeys(('x','y')) 要想遍历一个字典(一般用键),只要循环查看它的键,然后通过以键为索引获取值。 从python 2.2开始,可以不必使用keys()方法获取供循环使用的键值对列表。 可以使用迭代器轻松访问类序列对象,例如字典和文件。 只需要用字典的名字就可以在for循环里遍历字典。 要想获取字典中某个元素的值,可以使用所熟悉的字典键加上中括号来得到。 例如:dict1['x'] 如果想访问字典中的一个元素,而该元素在字典中没有对应的键,将会产生一个错误。 检查一个字典中是否有某个键的最好方法是用字典的has_key()方法,或者in、not in操作符。 字典中的键必须是可哈希的,所以数字和字符串可以作为字典中的键,但是列表和其他字典不行。 如果更新字典,以下有几种方式对字典做修改: 1》添加一个新数据项或新元素(即,一个键-值对) 2》修改一个已存在的数据项 3》删除一个已存在的数据项 也可以使用内建方法update()将整个字典的内容添加到另一个字典。 删除整个字典的操作不常见。通常,删除字典中的某个元素(del dict1["name"])或者清除整个字典的内容(dict1.clear())。 也可以使用pop函数,删除并返回键为"name"的条目。dict1.pop("name") PS:避免使用内建对象名字作为变量的标识符 ''' #创建字典并给字典赋值 dict1={} #创建一个空的字典 dict1["name"]="ewang" #给字典添加一个新的数据项 dict2={"Name":"ewang","age":28} #创建一个字典并赋值 dict3=dict() #调用dict函数创建一个空字典 dict4=dict((["hello","ewang"],["hi","EWANG"])) #调用dict函数并赋值 #调用fromkeys函数创建一个默认字典 #值为56 dict5={}.fromkeys(("x","y","z"),56) #调用fromkeys函数创建一个默认字典 #值模默认为None dict6={}.fromkeys(("x1","y1","z1")) #输出创建的字典 print dict1 print dict2 print dict3 print dict4 print dict5 print dict6 print "*"*50 #访问字典中的值 for key in dict5.keys(): #通过键遍历一个字典 print "key=%s ,value=%d" %(key,dict5[key]) print "*"*50 print "no call keys function" for key in dict5: #迭代器访问类序列对象 print "key=%s ,value=%d" %(key,dict5[key]) print "*"*50 #获取字典中某个元素的值 print "dict1[\"name\"]=" ,dict1["name"] print "dict2[\"Name\"]=" ,dict2["Name"] try: #如果字典中不存在相应的键,会报一个错误 print "dict2[\"Name\"]=%s" %(dict2['ame']) except KeyError,e: print "KeyError:",e if dict2.has_key("age"): print "dict2 exitsts the key age" if "age" in dict2: print "dict2 exitsts the key age" if "Age" not in dict2: print "dict2 not exitsts the key Age" print "*"*50 #添加一个新的数据或新元素 dict1["server"]="192.168.111.111" dict1["port"]=8080 dict2[234]=456 dict2["234"]=456 dict3[3.2]=3.1415926 print dict1 print dict2 print dict3 print "*"*50 #修改一个已存在的数据项 dict1["name"]="hello world" dict1["port"]=8888 print "dict1[\"name\"]=",dict1["name"] print "dict1[\"port\"]=",dict1["port"] print "*"*50 #删除一个已存在的数据项 del dict2[234] #删除一个数据项 dict3.clear() #删除字典中的内容 print dict3 del dict3 #删除整个字典 name=dict1.pop("name") #删除并返回键为“name”的条目 try: print dict2[234] except KeyError,e: print "KeyError:",e try: print dict3 except NameError,e: print "NameError:",e
相关文章推荐
- python中集合类型创建、更新、删除、修改以及操作符使用实例代码
- python列表操作实例源码讲解(创建、使用、更新、删除)
- python元组的创建、赋值、更新、删除等操作实例源码
- python数字类型介绍以及创建数字值对象引用、删除数字值引用操作实例
- python数字类型介绍以及创建数字值对象引用、删除数字值引用操作实例
- Python编程之列表操作实例详解【创建、使用、更新、删除】
- python数字类型介绍以及创建数字值对象引用、删除数字值引用操作实例
- Python元组操作实例分析【创建、赋值、更新、删除等】
- PostgreSQL连接python,postgresql在python 连接,创建表,创建表内容,插入操作,选择操作,更新操作,删除操作。
- python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法
- Go语言字典(map)用法实例分析【创建,填充,遍历,查找,修改,删除】
- Python数据类型中的字典-创建和基本操作
- python对MySQL数据库的操作表单的创建,数据的插入,读取,更新,删除操作
- python-24-如何派生类内置不可变类型并修改其实例化行为?如何为创建大量实例节省内存?
- Python映射类型内建函数与工厂函数操作实例源代码
- 订单号数据类型修改--删除和创建复制订阅项目(只需要操作指定字段作为主键的那些)
- python的【字典dict】:创建、访问、更新、删除;查看键、值、键值对;遍历;排序
- MySQL数据库创建、修改和删除表操作实例
- python的【字典dict】:创建、访问、更新、删除;查看键、值、键值对;遍历;排序
- oracle表空间操作(创建、修改、删除)