本节介绍Python中的字典:是另一种可变容器模型,且可存储任意类型对象。
(1)字典简介:
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
注意:键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
(2)字典的操作:
包括创建字典、访问字典元素、修改字典的值、删除字典指定元素,删除字典:
Python 2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:19:22) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. #1.创建字典: >>> dic={'name':'MenAngel','age':19,'sex':'男'}; >>> print dic {'age': 19, 'name': 'MenAngel', 'sex': 'xc4xd0'} #2.修改字典中元素 >>> dic['name']='sunjimeng' #3.访问字典中指定元素 >>> print dic {'age': 19, 'name': 'sunjimeng', 'sex': 'xc4xd0'} >>> dic['name'] 'sunjimeng' >>> dic {'age': 19, 'name': 'sunjimeng', 'sex': 'xc4xd0'} #4.删除字典中指定元素 >>> del dic['sex'] >>> dic {'age': 19, 'name': 'sunjimeng'} #5.删除字典中所有元素 >>> dic.clear() >>> dic {} #6.删除字典 >>> del dic
(3)字典键的特性:
注意:字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。
1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住:
2)键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行:
Python 2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:19:22) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> dic={'name':'MenAngel','age':19,'name':'sunjimeng'} >>> dic {'age': 19, 'name': 'sunjimeng'}
#键可以用数字,字符串,可以用元组 >>> dic[4]=346 >>> dic {'age': 19, 4: 346, 'name': 'sunjimeng'} >>> dic[('abc',20)]='sex' >>> dic {('abc', 20): 'sex', 'age': 19, 4: 346, 'name': 'sunjimeng'}
#但不能用列表 >>> dic[[20,]]=20 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'list'
(4)字典内置函数或方法:
1)字典内置函数:
#1.第一种字典初始化方式: >>> dic1={} >>> dic1['name']='MenAngel'; >>> dic1['age']=20; >>> dic1['sex']='男'; #2.第二种字典初始化方式 >>> dic2={'name':'MenAngel','age':20,'sex':'男'] >>> dic1 {'age': 20, 'name': 'MenAngel', 'sex': 'xc4xd0'} >>> dic2 {'age': 20, 'name': 'MenAngel', 'sex': 'xc4xd0'} >>> cmp(dic1,dic2) 0 >>> len(dic1) 3 >>> str(dic1) "{'age': 20, 'name': 'MenAngel', 'sex': '\xc4\xd0'}" >>> type(dic1) <type 'dict'>
2)Python字典的内置方法:
>>> dict1={'age': 20, 'name': 'MenAngel', 'sex': 'xc4xd0'} >>> dict2=dict1.copy() >>> list1=dict1.keys() >>> list2=dict1.values() >>> dict1.has_key('name') True >>> dict1,dict2 ({'age': 20, 'name': 'MenAngel', 'sex': 'xc4xd0'}, {'age': 20, 'name': 'MenAngel', 'sex': 'xc4xd0'}) >>> list1,list2 (['age', 'name', 'sex'], [20, 'MenAngel', 'xc4xd0']) >>> dict1['name']='sunjimeng' >>> dict1,dict2 ({'age': 20, 'name': 'sunjimeng', 'sex': 'xc4xd0'}, {'age': 20, 'name': 'MenAngel', 'sex': 'xc4xd0'}) >>> dict1.update(dict2) >>> dict1,dict2 ({'name': 'MenAngel', 'age': 20, 'sex': 'xc4xd0'}, {'age': 20, 'name': 'MenAngel', 'sex': 'xc4xd0'}) >>> dict.setdefault('abc','123') 20 >>> dict1.setdefault('abc','123') '123' >>> dict1.setdefault('abc','456') '123' >>> dict1.items() [('abc', '123'), ('name', 'MenAngel'), ('age', 20), ('sex', 'xc4xd0')]