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、小结:
       
     
     
     
  • 相关阅读:
    利用中转输出表制作HijackDll
    webshell查杀
    说说无线路由器后门的那些事儿(1)-D-Link篇
    htpwdScan — 一个简单的HTTP暴力破解、撞库攻击脚本
    OD消息断点
    Burp Suite详细使用教程-Intruder模块详3
    burp intruder模块详解
    谈谈神的能力
    语法入门基本概念
    多项式
  • 原文地址:https://www.cnblogs.com/hbsygfz/p/4537098.html
Copyright © 2011-2022 走看看