zoukankan      html  css  js  c++  java
  • Python 2.7 学习笔记 字典(map)的使用

    python中的字典,就是通常说的map,即 key/value集合的数据结构。

    本文来介绍下在python下如何使用字典。 对于map这种数据结构能干什么,我们就不说了,这是一个常见的数据结构,我们假设大家都理解了。

    我们重点讲在python下如何使用它,其实就是熟悉相关的api方法了。

    作为一个数据结构,使用它,不外乎包括创建(包括初始化)、增删查改、以及其它一些操作。

    一、创建

    通过{}来标识一个字典,内容是键值对,形式就是典型的json对象的格式。如:

    users = {}  #创建一个空的字典

    users = {1:"jack",2:"tom"} #创建一个字典,包含两个成员.

    除上面这种方式外,还可以利用内置函数 dict 来创建字典。

    二、插入和修改

    举例如下

    >>> users={}
    >>> users[3]="jame"
    >>> print users
    {3: 'jame'}
    >>> users[4]="tom"
    >>> users[10]="mike"
    >>> print users
    {10: 'mike', 3: 'jame', 4: 'tom'}
    >>> users[4]="tom1"
    >>> print users
    {10: 'mike', 3: 'jame', 4: 'tom1'}


    直接通过 字典变量名[key名]就可以添加新的key-value项。 注意上面[]的数字不是序号,字典没有序号的概念,这里的数字是key值。

    从上面例子可以看出,如果指定的key不存在,就会自动添加一个。
    如果指定的key存在,就会用指定的值替换存在的key对应的value值。

    三、删除

    1、清除字典中的所有项

    字典对象提供了 clear方法,可以清楚字典中的所有项。

    2、del 字典变量

    举例如下

    >>> users={1:"tom"}
    >>> newusers = users
    >>> del users
    >>> print users
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    NameError: name 'users' is not defined
    >>> print newusers
    {1: 'tom'}

    del是python中的内置语句,用于删除变量的定义。从上面例子可以看出,它只是删除变量定义,不会删除变量指向的内容,当然如果这个内容没有被其它变量引用,python会自动释放。上面的例子,users和newusers指向同一个字典对象,即使我们删除了users变量,对newusers是不影响的。
    这点与clear方法不同,clear方法是删除字典中的所有内容,如果多个变量指向同一字典,该字典内容被clear啊,显然所有变量都能察觉到。

    3、pop方法

    先看例子

    >>> data={"x":1,"y":2}
    >>> print data
    {'y': 2, 'x': 1}
    >>> value = data.pop("x")
    >>> print value
    1
    >>> print data
    {'y': 2}
    >>> value = data.pop("z")
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    KeyError: 'z'

    pop方法是根据传入的key值,返回对应的value值,并删除字典中的该条目。
    但如果指定的key对应的条目在字典中不存在,则程序会出现异常。

    四、查询

    1、判断key是否存在

    在很多情况下,我们需要判断一个key是否存在。代码如:

    >>> data={"x":1}
    >>> if "x" in data:
    ...     print True
    ... else:
    ...     print False
    ...
    True
    >>> if "y" in data:
    ...     print True
    ... else:
    ...     print False
    ...
    False

    除了用 in 运算符来判断某个key是否在字典中存在外,还可以用字典的方法 has_key(key)来检查,效果是一样的。

    2、获取指定key的value

     格式:字典变量[key值],举例如

    >>> data={"x":1}
    >>> data["x"]
    1
    >>> data["y"]
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    KeyError: 'y'

    可以看出,如果key在字典中不存在,会报异常。还有一种更友好的方式,就是利用get方法,举例如下:

    >>> data={"x":1}
    >>> print data.get("x")
    1
    >>> print data.get("y")
    None

    可以看出,即使key不存在,程序不会出异常,get会返回一个None值。
    如果我们希望在获取key对应的value时,如果key存在,则正常返回,如果key不存在,可以自动往字典中添加一个条目,并返回设置的条目的值,这可以用到setdefault方法,举例如下:

    >>> data={"x":1}
    >>> print data.setdefault("x")
    1
    >>> print data.setdefault("x",3)
    1
    >>> print data
    {'x': 1}
    >>> print data.setdefault("y",2)
    2
    >>> print data
    {'y': 2, 'x': 1}
    >>> print data.setdefault("z")
    None
    >>> print data
    {'y': 2, 'x': 1, 'z': None}

    从上面代码例子中,我们可以很清晰的看出setdefault方法的作用。

    3、遍历字典

    很多场景下,我们需要遍历整个字典,获取到其中的每个条目信息。这可以这么来做,具体看代码:

    >>> data = {"x":1,"y":2,"z":3}
    >>> for key in data:
    ...     print key
    ...     print data[key]

    通过for循环,可以很方便的遍历整个字典。

    总结下,本文按照使用场景的方式介绍了下字典最常用的一些操作,能满足绝大部分应用。除上面介绍的外,还有一些操作方法,不太常用,这里就不再介绍。

  • 相关阅读:
    %
    【收藏】Javascript调用后台代码的方法
    C++Builder2010中配置OpenCV2.2
    【收藏】Visual studio 2008 && 2010 快捷键大全
    队列的练习
    哈希表
    poj 3750 链表
    C/C++内存存储 mark在此
    二叉树,深搜,广搜
    链表的练习
  • 原文地址:https://www.cnblogs.com/51kata/p/5335840.html
Copyright © 2011-2022 走看看