Python程序设计案例课堂
上QQ阅读APP看书,第一时间看更新

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']