zoukankan      html  css  js  c++  java
  • python字典

    概念

    一种通过名字引用值的数据结构为映射,而字典是python中唯一内建的映射类型。字典由多个键与其对应的值构成,键/值也成为项。每个键值之间用冒号隔开,项之间用逗号隔开,整个字典是由一对大括号括起来。空字典不包括任何项。键可以是数字、字符串和元组,并且唯一,但值不唯一。

    某些情况,字典比列表更加适用:

    • 表示游戏棋盘的状态,每个键都是由坐标值组成的元组。
    • 存储文件的修改次数,用文件名作为键。
    • 电话/地址簿

    创建与操作

    创建

    可以通过下面方式来创建,

    也可以通过dict函数来创建

    通过序列对来建立:

    通过关键字来创建:

    空字典

    dict()

        {}

    操作

    len(d),返回d中项的数量

    d[k],返回关键字k对应的值

    d[k]=v,将值v关联到k上

    del d[k],删除键为k的项

    k in d,检查d中是否含有键为k的项

    字典的格式化

    在每个转换符%的后面,可以加上键(用圆括号括起来),后面再跟其他说明元素。

    使用字典格式化的方法,还可以使用模版格式化

    >>> phonebook = {'Beth': '9102','Alice': '2341','Cecil': '3258'}

    >>> "Cecil's phone number is %(Cecil)s." %phonebook

    "Cecil's phone number is 3258."

    字典的方法

    clear

    copy

    fromkeys

    get

    has_key

    items iteritems

    keys iterkeys

    pop popitem

    setdefault

    update

    clear:清除字典中所有的项,包括原始字典中所有的元素,无返回值(None)。

    #例1不使用clear方法

    >>> x={}

    >>> y=x #x,y指向同一字典

    >>> x['key']='value'

    >>> y

    {'key': 'value'}

    >>> x={} #x指向另一新的字典,而原字典不变,y仍指向原来的字典

    >>> y

    {'key': 'value'}

    >>>

    #例2使用clear方法清除,清除了原字典

    >>> x={}

    >>> y=x

    >>> x['key']='value'

    >>> y

    {'key': 'value'}

    >>> x.clear() #使用clear()清空了原始字典

    >>> y

    {}

    cpoy:返回一个具有相同键值对的新字典,此方法实现的是浅复制。

    由上可以发现,当在副本中替换值的时候,原始字典不受影响,而进行修改的时候,原始字典也跟着改变了。

    但是深复制就能避免这个问题,需要deepcopy函数来完成。

    由上可以发现深度复制的副本可以完全保留原始字典数据。

    fromkeys:使用给定的键建立新的字典,每个键默认对应的值为None,也可以自己提供默认值。

    >>> {}.fromkeys(['name','age']) #构造一个空字典

    {'age': None, 'name': None}

    >>> dict.fromkeys(['name','age']) #直接在所有字典的类型dict上面调用

    {'age': None, 'name': None}

    >>> dict.fromkeys(['name','age'],'(unkown)') #自己提供默认值

    {'age': '(unkown)', 'name': '(unkown)'}

    get:访问字典项的方法,更为宽松。使用get访问一个不存在的键,不会出现异常,而返回None。也可以自定义默认值。当键存在就是普通字典查询一样。

    has_key:检查字典中是否含有给出的键。python3中不包括这个函数。

    items和iteritems:items将所有的字典以列表的方式返回,返回时没有特殊的顺序。而iteritems会返回一个迭代器而不是列表。

    keys和iterkeys:将字典中的键以列表的形式返回,而iterkeys则返回针对键的迭代器。

    values和itervalues:values以列表的形式返回值,itervalues返回值的迭代器。返回值的列表中可以包含重复的元素。

    pop和popitem:pop方法获取对应给定键的值,然后将这个键值对从字典中删除。popitem弹出随机的项,因为字典是无序的,也就不会像列表有最后一个元素的概念。

    setdefualt:类似get方法。当键不存在的时候,setdefault返回默认值并相应的更新字典;如果键存在,则返回其对应的值,不改变字典。

    update:利用一个字典项更新另一个字典。如键不存在则添加,相同的键则覆盖。

  • 相关阅读:
    第七章
    第五章
    第六章
    Git使用入门
    源代码的下载和编译
    向中国最牛的前端群-鬼群致敬
    Normalize.css做了哪些事情--看代码
    谷歌浏览器:书签被误删了怎么办
    2013/8月读书计划
    Limu:JavaScript的那些书
  • 原文地址:https://www.cnblogs.com/whych/p/9452517.html
Copyright © 2011-2022 走看看