3.3 字典的基本操作
字典是另一种可变容器模型,且可存储任意类型的对象。下面介绍字典的基本操作。
3.3.1 字典对象的特性
字典的对象使用大括号{},将元素列出。字典的元素排列并没有一定的顺序,因为可以使用键值来取得该元素。
下列案例创建了一个字典对象:
>>>dic = {"name":"John", "sex":"male", "phone":"12345678"} >>>dic {'sex': 'male', 'name': 'John', 'phone': '12345678'}
可以使用键值来返回字典中的元素:
>>> dic = {"name":"John", "sex":"male", "phone":"12345678"} >>> dic["name"] 'John' >>> dic["sex"] 'male' >>> dic["phone"] '12345678'
如果输入的键值在字典中不存在,Python会产生一个KeyError错误:
>>> dic = {"name":"John", "sex":"male", "phone":"12345678"} >>> dic["email"] Traceback (most recent call last): File "<pyshell#4>", line 1, in <module> dic["email "] KeyError: email
字典值可以没有限制地取任何Python对象,既可以是标准的对象,也可以是用户定义的,但键值不行。设置键值时需要注意以下两点。
(1)不允许同一个键出现两次。如果同一个键被赋值两次,会记住后一个值。例如:
>>> dic= {'Name': 'John', 'Age': 25, 'Name':’千谷’} >>> print (dic['Name']) '千谷’
(2)键必须不可变,所以可以用数字、字符串或元组充当,而用列表就不行。例如:
>>>dic= {['Name']: 'John', 'Age': 25} Traceback (most recent call last): File "<pyshell#26>", line 1, in <module> dic= {['Name']: 'John ', 'Age': 25} TypeError: unhashable type: 'list'
可以使用del语句来删除字典中的元素:
>>>dic = {"name":"John", "sex":"male", "phone":"12345678"} >>> del dic["phone"] >>> dic {'sex': 'male', 'name': 'John'}
字典中的元素值是可以修改的:
>>>dic = {"name":"John", "sex":"male", "phone":"12345678"} >>>dic["name"] = "Machael" >>> dic {'sex': 'male', 'name': 'Machael', 'phone': '12345678'}
可以使用Python的len()内置函数来返回字典中的元素数目:
>>>dic = {"name":"John", "sex":"male", "phone":"12345678"} >>>len(dic) 3
3.3.2 字典的内置函数和方法
下面主要讲述字典的内置函数和方法的使用技巧。
1.字典的内置函数
字典的内置函数包括len()、str()和type()。
(1)len(dict):计算字典元素个数,即键的总数。例如:
>>> dic = {'Name': 'John', 'Age': 21, 'Class': 2} >>> len(dic) 3
(2)str(dict):输出字典以可打印的字符串表示。例如:
>>>dic = {'Name': 'John', 'Age': 21, 'Class': 2} >>>str(dic) "{'Age': 21, 'Class': 2, 'Name': 'John'}"
(3)type(variable):返回输入的变量类型,如果变量是字典就返回字典类型。例如:
>>>dic = {'Name': 'John', 'Age': 21, 'Class': 2} >>>type(dic) <class 'dict'>
2.字典的内置方法
字典对象有许多内置方法,在Python解释器内输入dir({}),就可以显示这些内置方法的名称。例如:
>>>dir({}) ['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
下面挑选最常用的方法进行讲解。
1)clear()
该方法用于清除字典中的所有元素。例如:
>>>dic = {"name":"John", "sex":"male", "phone":"12345678"} >>>dic.clear() >>>dic {}
2)copy()
该方法用于复制字典。例如:
>>>dic = {"name":"John", "sex":"male", "phone":"12345678"} >>>newdic = dic.copy() >>>newdic {'sex': 'male', 'name': 'John', 'phone': '12345678'}
3)get(k [, d])
该方法中k是字典的键值,d是键值的默认值。如果k存在,就返回其值,否则返回d。
例如:
>>> dic = {"name":"John", "sex":"male", "phone":"12345678"} >>> dic.get("name") 'John' >>>dic.get("email", "None") 'None'
4)items()
该方法使用字典中的元素创建一个以(key, value)为一组的元组对象。例如:
>>> dic = {"name":"John", "sex":"male", "phone":"12345678"} >>> dic.items() dict_items([('sex', 'male'), ('name', 'John'), ('phone', '12345678')])
5)keys()
该方法使用字典中的键值创建一个列表对象。例如:
>>> dic = {"name":"John", "sex":"male", "phone":"12345678"} >>> dic.keys() dict_keys(['sex', 'name', 'phone'])
6)popitem()
该方法用于删除字典中的第一个元素。例如:
>>> dic = {"name":"John", "sex":"male", "phone":"12345678"} >>> dic.popitem() ('sex', 'male') >>> dic {'name': 'John', 'phone': '12345678'} >>> dic.popitem() ('name', 'John') >>> dic {'phone': '12345678'}
7)setdefault(k [, d])
该方法中k是字典的键值,d是键值的默认值。如果k存在,就返回其值,否则返回d。
例如:
>>> dic = {"name":"John", "sex":"male", "phone":"12345678"} >>> dic.setdefault("name") 'John' >>> dic {'sex': 'male', 'name': 'John', 'phone': '12345678'} >>> dic.setdefault("email", "aaa@ccc.com") 'aaa@ccc.com' >>> dic {'sex': 'male', 'name': 'John', 'email': 'aaa@ccc.com', 'phone': '12345678'}
8)update(E)
该方法中E是字典对象,由字典对象E来更新此字典。例如:
>>> dic = {"name":"John", "sex":"male", "phone":"12345678"} >>> dic.update({"mail":"aaa@ccc.com"}) >>> dic {'sex': 'male', 'name': 'John', 'mail': 'aaa@ccc.com', 'phone': '12345678'}
9)values()
该方法使用字典中键值的数值来创建一个列表对象。例如:
>>> dic = {"name":"John", "sex":"male", "phone":"12345678"} >>> dic.values() dict_values(['male', 'John', '12345678']