zoukankan      html  css  js  c++  java
  • 初见Python<4>:字典

    序列是python中的一种数据结构,映射是另一种。映射(mapping)通过名字来引用值。python内建的唯一一种映射结构是字典。字典中的值没有特殊的顺序,但都存储在一个特定的键中。键可以是数字、字符串甚至数元组。
    1、字典的使用:
    序列通过索引来找到元素的取值。
    字典通过键来获取它的值。
    字段比列表在某些方面更加适用:
    ①游戏棋盘是用坐标值来组成的
    ②文件是用文件名来确定的
    ③数字电话,地址对应一个联系人
    这些都不能通过索引来代替。
    2、字典的创建:
    字典是由键值对组成,一个键值对称为一项。键与值之间用冒号隔开,项与项之间用逗号隔开,整个字典用一对大括号括起来。空字典,即不包含任何项的字典,是有一对大括号组成。
    列表,用方括号。
    元组,用圆括号。
    字典中的键是唯一的,同一个字典中不允许重复,值则是不唯一的。
    使用dict函数来建立字段。
    3、基本字典操作:
    字典的基本行为包括:
    ①len返回字典中项的数目。
    ②dic1[k]返回字典dic1中键为k的值。
    ③dic1[k]=v将值v关联到字典dic1的键k上。
    ④del dic1[k]删除字典dic1中键为k的项。
    ⑤k in dic1检查字典dic1中是否含有键为k的项。
    可以看到,dic1[k]=v的用法既可以为字典添加新项,也可以用于更改现有项的值。
    另外,有:
    ①键类型:字典的键不一定为整数类型,也可以是浮点型、字符串、元组等等。
    ②自动添加:为字典中不存在的键分配一个值时,会自动在字典中创建这样一个键值对。
    ③成员资格:k in dic1是用来查找键是否存在,而不是值是否存在。
    4、字典方法:
    (1)clear方法
    clear方法用于清空字典,但没有返回值。
    注意以下两种区别:
    dicx与dicy并不是两个字典,而是指向同一字典的两个代号。对dicx的改变从而会影响dicy。因此,对dicx重新赋值或者清空都会影响dicx字典本身,从而影响dicy。
    dicx与dicy最初都指向同一个字典。后来使用dicx={}重新将dicx指向了另一个空字典。此后,dicx与dicy就是两个不同的字典,对dicx的改变将不影响dicy。
    (2)copy方法:
    copy方法主要用于将一个字典复制产生另一个字典,但这种复制属于浅复制(shallow copy)。
    对字典x使用copy方法产生一个副本y。对y进行项的添加、删除、清空、值的替换都不影响x,但是对值的改变是会影响到x字典的。
    (3)deepcopy函数
    deepcoop函数是相对与copy方法的深复制。但它不是字典内建的方法,而是copy模块中的deepcopy函数。
    deepcopy函数是一种深复制,复制完成后,非副本做出的任何改变都不会影响到元字典本身。
    (4)fromeys方法
    fromkeys方法主要是为创建新的字典,该字典所有的键都是相同的值。新项一定要给出键,值可以不给,不给就默认为None。
    从上面的例子可以看出,使用fromkeys方法只能产生一个新的字典,而不能该变一个字典本身,或者为一个旧字典添加新项。并且fromkeys方法只能为添加的键使用一个共同的值,即所有的键的值都是相同的,键要么都是none,要么都是一个值。
    (5)get方法
    get方法是一种访问字典项的方法。如果使用键来访问字典中的项,当我们试图访问字典中不存在的项时会出错。
    但是使用get方法则会返回一个默认值,比如none。这个默认值也可以更改。
    举例:查询用户电话和地址,对空用户进行了处理。
    (6)has_key()方法
    用于检查字典中是否含有给出的键。
    相当于k in dic
    (7)items方法
    items方法将所有的字典项以列表方式返回。产生的列表的每一个元素都是原来字典的一项(键-值),但项与项之间在返回是并没有特殊的顺序。
    (8)iteritems方法
    iteritems方法的作用与items方法大致相同,但是会返回一个迭代器对象而不是列表。
    在很多情况下iteritems更高效。
    (9)keys方法
    keys方法是将字典中所有的键以列表形式返回。类似于items。
    (10)iterkeys方法
    iterkeys方法是将字典中的键以迭代器的方式返回。类似于iteritems。
    (11)popitem方法
    popitem方法类似于列表中的list.pop。list.pop方法会弹出列表中的最后一个元素,而popitem弹出一个随机的项。因为在字典中没有顺序的概念。如果想一个接一个的移除并处理项,这个方法就非常有效。
    每一次popitem()方法就会在字典中随机移除一项。
    字典中没有append等级的方法,这是因为在字典中没有顺序的概念。
    (12)setdefault方法
    setfault方法在某种程度上类似于get方法,就是能够获得给定键相关联的值。
    除此之外,setdefalut方法还能在字典中不含有给定键的情况下设定相应的键值。
    setfault方法有两个作用,一个是根据键查看某一个已经存在的项的值,第二是为字典添加一个新的项,添加时可以指定项中的值,也可以不指定,那么就会自动使用默认值None。
    (13)update方法
    update方法可以利用一个字典去更新另外一个字典。
    对于一个旧字典,使用新字典来更新,新字典中的项可以是一项也可以是多项。
    如果旧字典中没有新字典中的键,那么新字典中的那项就会被添加到旧字典中。
    如果旧字典中有相同的键,那么会用新字典中项的值替代旧字典中的项的值。
    (14)values方法
    values方法用于以列表的形式返回字典中的值。与items方法和keys方法类似。由于字典中的值可能相同,因此,返回的列表中可以包含重复的元素。
    (15)itervalues方法
    itervalues方法用于以迭代器的形式返回字典中的值。与iteritems方法和iterkeys方法类似。由于字典中的值可能相同,因此,返回的列表中可以包含重复的元素。
    5、小结:
       
     
     
     
  • 相关阅读:
    phpcms后台进入地址(包含No permission resources错误)
    phpmyadmin上传大sql文件办法
    ubuntu彻底卸载mysql
    Hdoj 2602.Bone Collector 题解
    一篇看懂词向量
    Hdoj 1905.Pseudoprime numbers 题解
    The Python Challenge 谜题全解(持续更新)
    Hdoj 2289.Cup 题解
    Hdoj 2899.Strange fuction 题解
    Hdoj 2199.Can you solve this equation? 题解
  • 原文地址:https://www.cnblogs.com/hbsygfz/p/4537098.html
Copyright © 2011-2022 走看看