python字典基本操作总结

来源:互联网 发布:华为光猫更改ssh端口 编辑:程序博客网 时间:2024/06/07 22:15

经常用python,体会就是会用的就经常用,总是那么几个方法。其实很多方法有时候更方便,更直接可以达到目的,只是自己不清楚它的真实用法罢了。总是需要看看书,总结一下,才会有提高。
现将python字典的基本操作和方法总结如下,直接上代码亲测:

# -*- coding: utf-8 -*-"""Created on Thu Feb 23 20:45:43 2017@author: daliang"""print "#################### 字典创建 #################################"print "# 直接创建字典"phoneBook = {'liang':'S201402034','gou':'S201402031','yang':'S201402033'}print phoneBookprint "# 利用dict函数通过其他映射或者键值对创建字典"items = [('name','gou'),('age','27')]d1 = dict(items)print d1items2 = [['name','daliang'],['age','26']]d2= dict(items)print d2d3 = dict(name='daliang',age='26')print d3print "#################### 字典基本操作 #############################"print "# 字典的键可以是任何不可变类型,比如整型,浮点型,字符串,元组 "dictName = {'liang':'S201402034','gou':'S201402031','yang':'S201402033'}print len(dictName)print dictName['liang']dictName['liang'] = 'modify it'print dictName['liang']del dictName['liang']print dictNameif 'liang' in dictName:    print dictName['liang']else:    print "not this key"print "###################### 字典方法 ##########################"print "# clear清除所有项"dictName = {'liang':'S201402034','gou':'S201402031','yang':'S201402033'}print dictNamedictName.clear()print dictNameprint "# copy 返回相同键值对的新字典,浅复制:新字典中的元素是老字典的引用"print "# deepcopy 返回相同键值对的新字典,深复制:字典中的元素是新的对象,它不是成员方法,只是函数"dictName = {'liang':'S201402034','gou':'S201402031','yang':['S201402033','S201402034']}from copy import deepcopydeepCopiedDict = deepcopy(dictName)shallowCopiedDict = dictName.copy()print shallowCopiedDictprint deepCopiedDictshallowCopiedDict['yang'].remove('S201402034')print shallowCopiedDictprint deepCopiedDictprint dictNameprint "# fromkeys 使用指定的键建立新的字典,每一个键的默认值为none,也可以指定默认值"dictName = {}.fromkeys(['name','age','gender'])print dictNamedictName = {}.fromkeys(['name','age','gender'],'undefined')print dictNameprint "# get 通过键访问字典中的值,键不存在时,不会出错"dictName = {'liang':'S201402034','gou':'S201402031','yang':['S201402033','S201402034']}print dictName.get('liang')print dictName.get('niu')print dictName.get('niu','key not exist!')print "# has_key 相当于  k in dict"dictName = {'liang':'S201402034','gou':'S201402031','yang':['S201402033','S201402034']}print dictName.has_key('liang')print dictName.has_key('niu')print "# items 以列表额形式返回字典,每一项都是键值对的形式的列表"print "# iteritems 功能大致相同,返回迭代器对象,而不是列表"dictName = {'liang':'S201402034','gou':'S201402031','yang':['S201402033','S201402034']}print dictName.items()print dictName.iteritems().next()print list(dictName.iteritems())print "#keys 以列表的形式返回键"print "#iterkeys 返回键的迭代器对象"dictName = {'liang':'S201402034','gou':'S201402031','yang':['S201402033','S201402034']}print dictName.keys()print dictName.iterkeys().next()print list(dictName.iterkeys())print "#value 以列表的形式返回值"print "#itervalues 返回值的迭代器对象"dictName = {'liang':'S201402034','gou':'S201402031','yang':['S201402033','S201402034']}print dictName.values()print dictName.itervalues().next()print list(dictName.itervalues())print "# pop 获取给定键的值,然后将键值对删除"print "# popitem 弹出一个随机键值对,并删除"dictName = {'liang':'S201402034','gou':'S201402031','yang':['S201402033','S201402034']}print dictName.pop('liang')print dictName.popitem()print dictNameprint "# setdefault 类似于get,获得给定键的值,如果不含有指定键,还可以设定键值"dictName = {'liang':'S201402034','gou':'S201402031','yang':['S201402033','S201402034']}print dictName.setdefault('liang','return or set')print dictName.setdefault('niu','return or set')print dictNameprint "# update 利用一个字典更新另一个字典,没有的键值对会被添加,已存在的键的值会被覆盖"dictName = {'liang':'S201402034','gou':'S201402031','yang':['S201402033','S201402034']}newDict = {'niu':'S201402039','yang':'S201402038'}print dictName.update(newDict)print dictName

运行结果:

#################### 字典创建 ################################## 直接创建字典{'gou': 'S201402031', 'yang': 'S201402033', 'liang': 'S201402034'}# 利用dict函数通过其他映射或者键值对创建字典{'age': '27', 'name': 'gou'}{'age': '27', 'name': 'gou'}{'age': '26', 'name': 'daliang'}#################### 字典基本操作 ############################## 字典的键可以是任何不可变类型,比如整型,浮点型,字符串,元组 3S201402034modify it{'gou': 'S201402031', 'yang': 'S201402033'}not this key###################### 字典方法 ########################### clear清除所有项{'gou': 'S201402031', 'yang': 'S201402033', 'liang': 'S201402034'}{}# copy 返回相同键值对的新字典,浅复制:新字典中的元素是老字典的引用# deepcopy 返回相同键值对的新字典,深复制:字典中的元素是新的对象,它不是成员方法,只是函数{'gou': 'S201402031', 'yang': ['S201402033', 'S201402034'], 'liang': 'S201402034'}{'gou': 'S201402031', 'yang': ['S201402033', 'S201402034'], 'liang': 'S201402034'}{'gou': 'S201402031', 'yang': ['S201402033'], 'liang': 'S201402034'}{'gou': 'S201402031', 'yang': ['S201402033', 'S201402034'], 'liang': 'S201402034'}{'gou': 'S201402031', 'yang': ['S201402033'], 'liang': 'S201402034'}# fromkeys 使用指定的键建立新的字典,每一个键的默认值为none,也可以指定默认值{'gender': None, 'age': None, 'name': None}{'gender': 'undefined', 'age': 'undefined', 'name': 'undefined'}# get 通过键访问字典中的值,键不存在时,不会出错S201402034Nonekey not exist!# has_key 相当于  k in dictTrueFalse# items 以列表额形式返回字典,每一项都是键值对的形式的列表# iteritems 功能大致相同,返回迭代器对象,而不是列表[('gou', 'S201402031'), ('yang', ['S201402033', 'S201402034']), ('liang', 'S201402034')]('gou', 'S201402031')[('gou', 'S201402031'), ('yang', ['S201402033', 'S201402034']), ('liang', 'S201402034')]#keys 以列表的形式返回键#iterkeys 返回键的迭代器对象['gou', 'yang', 'liang']gou['gou', 'yang', 'liang']#value 以列表的形式返回值#itervalues 返回值的迭代器对象['S201402031', ['S201402033', 'S201402034'], 'S201402034']S201402031['S201402031', ['S201402033', 'S201402034'], 'S201402034']# pop 获取给定键的值,然后将键值对删除# popitem 弹出一个随机键值对,并删除S201402034('gou', 'S201402031'){'yang': ['S201402033', 'S201402034']}# setdefault 类似于get,获得给定键的值,如果不含有指定键,还可以设定键值S201402034return or set{'gou': 'S201402031', 'yang': ['S201402033', 'S201402034'], 'liang': 'S201402034', 'niu': 'return or set'}# update 利用一个字典更新另一个字典,没有的键值对会被添加,已存在的键的值会被覆盖None{'gou': 'S201402031', 'yang': 'S201402038', 'liang': 'S201402034', 'niu': 'S201402039'}
0 0