python 字典i

发布时间:2019-08-13 07:35:02编辑:auto阅读(1703)

    字典
        字典类似于你通过联系人名称查找地址和联系人详细情况的地址簿,即,我们把键(名字)和值(详细情况)联系在一起。注意,键必须是唯一的,就像如果有两个人恰巧同名的话,你无法找到正确的信息。
        键值对在字典中以这样的方式标记:d = {key1 : value1, key2 : value2 }。注意它们的键/值对用冒号分割,而各个对用逗号分割,所有这些都包括在花括号中。另外,记住字典中的键/值对是没有顺序的。如果你想要一个特定的顺序,那么你应该在使用前自己对它们排序。

    1,clear
    >>> d={}
    >>> d['name']='lili'
    >>> d['age']=12
    >>> d
    {'age': 12, 'name': 'lili'}
    >>> ret=d.clear()
    >>> d
    {}
    >>> print ret
    None
    2,copy
    >>> x={'name':'admin','mac':['foo','bar','bazz']}
    >>> y=x.copy()
    >>> y['name']='root'
    >>> y['mac'].remove('foo')
    >>> y
    {'mac': ['bar', 'bazz'], 'name': 'root'}
    >>> x
    {'mac': ['bar', 'bazz'], 'name': 'admin'}
    上图可以发现,替换值得时候原始字典不受影响,但是如果修改了值,原始字典也会被修改为了避免这个问题是用深复制deepcopy
    使用copy模块的deepcopy函数来完成操作
    >>> from copy import deepcopy
    >>> d={}
    >>> d['name']=['alfred','bertrand']
    >>> c=d.copy()
    >>> dc=deepcopy(d)
    >>> d['name'].append('clive')
    >>> c
    {'name': ['alfred', 'bertrand', 'clive']}
    >>> dc
    {'name': ['alfred', 'bertrand']}
    >>> d
    {'name': ['alfred', 'bertrand', 'clive']}
    >>> {'lili','22'}.fromkeys(['name','age'])
    dc通过deepcopy深复制 当修改d的内容dc没有发现变化
    3.fromkeys
    fromkeys方法使用给定的键建立新的字典,每个键默认对应的值为None
    在dict字典类型上调用方法
    >>> dict.fromkeys(['name','age'])
    {'age': None, 'name': None}
    设置默认值替代none
    >>> dict.fromkeys(['name','age'],'(unknown)')
    {'age': '(unknown)', 'name': '(unknown)'}
    4,get
    get方法定义更宽松的访问字典的方法。当使用get方法访问一个不存在的键时,没有任何异常,得到none值,还可以自定义默认值替换none
    如果键值存在,get用起来就像普通字典一样查询
    >>> d={}
    >>> print d['name']
    Traceback (most recent call last):
     File "<pyshell#93>", line 1, in <module>
       print d['name']
    KeyError: 'name'
    >>> print d.get('name')
    None
    >>> d.get('name','N/A')
    'N/A'
    >>> d['name']='lili'
    >>> d.get('name')
    'lili'
    5,has_key
    has_key 方法可以检查字典中是否含有给出的键,表达式d.has_key(k) 相当于表达式kind
    >>> d={}
    >>> d.has_key('name')
    False
    >>> d['name']='lili'
    >>> d.has_key('name')
    True
    6.items和iteritems
    items方法将所有的字典项以列表方式返回,这些列表项中的每一项都来自于(键,值)。但是项在返回时并没有特殊的顺序
    >>> d={'a':'a','b':'lajdflasd'}
    >>> d.items()
    [('a', 'a'), ('b', 'lajdflasd')]
    iteritems方法的作用大致相同但是会返回一个迭代器而不是列表
    >>> it=d.iteritems()
    >>> it
    <dictionary-itemiterator object at 0x02006E40>
    >>> list(it)
    [('a', 'a'), ('b', 'lajdflasd')]
    7,keys和iterkeys
    keys 方法将字典中的键以列表形式返回,而iterkeys则是返回针对键的迭代器
    8,pop
    pop方法用来获得对应于给定键的值,然后将这个键值对从字典中移除
    >>> d={'x':1,'y':2}
    >>> d.pop(x)
    >>> d.pop('x')
    1
    >>> d
    {'y': 2}
    9.popitem
    popitem方法类似于list.pop,后者会弹出列表的最后元素。但不同的是。popitem弹出随机的项
    >>> d
    {'y': 2}
    >>> d.popitem()
    ('y', 2)
    >>> d
    {}
    10,setdefault
    该方法在某种程度上类似于get方法,就是能够获得与给定键指向关联的值,除此之外setdefault还能在字典中不含有给定键值情况下设定相应的键值
    >>> d={}
    >>> d.setdefault('name','N/A')
    'N/A'
    >>> d
    {'name': 'N/A'}
    >>> d['name']='lili'
    >>> d.setdefault('name','N/A')
    'lili'
    >>> d
    {'name': 'lili'}
    11.update
    update方法可以利用一个字典项更新另外一个字典
    >>> d={'title':'pytho web site','url':'http://www.python.com',}
    >>> d={'title':'pytho web site','url':'http://www.python.com'}
    >>> x={'title':'python language website'}
    >>> d.update(x)
    >>> d
    {'url': 'http://www.python.com', 'title': 'python language website'}
    12,values和itervalues
    values方法以列表的形式返回字典中的值(itervalues),与返回键的列表不同的是,返回值得列表中可以包含重复元素
    >>> d={}
    >>> d[1]=1
    >>> d[2]=2
    >>> d[3]=3
    >>> d[4]=1
    >>> d
    {1: 1, 2: 2, 3: 3, 4: 1}
    >>> d.values()
    [1, 2, 3, 1]


关键字

上一篇: source upgrade pytho

下一篇: python异常处理