zoukankan      html  css  js  c++  java
  • Python-7-字典方法

    clear
    删除所有字典项
    >>> d = {}
    >>> d['name'] = 'Gumby'
    >>> d['age'] = 42
    >>> d
    {'age': 42, 'name': 'Gumby'}
    >>> d.clear()
    >>> d
    {}
    下面是第一个场景:
    >>> x = {}
    >>> y = x
    >>> x['key'] = 'value'
    >>> y
    {'key': 'value'}
    >>> x = {} 这里只是将x关联到一个新的空间,并不修改原来的空间
    >>> y
    {'key': 'value'}
    下面是第二个场景:
    >>> x = {}
    >>> y = x
    >>> x['key'] = 'value'
    >>> y
    {'key': 'value'}
    >>> x.clear()这里修改的是原来的空间
    >>> y
    {}
     
    copy
    返回一个与原字典相同的新字典
    >>> x = {'username': 'admin', 'machines': ['foo', 'bar', 'baz']}
    >>> y = x.copy()
    >>> y['username'] = 'mlh'
    >>> y['machines'].remove('bar')
    >>> y
    {'username': 'mlh', 'machines': ['foo', 'baz']}
    >>> x
    {'username': 'admin', 'machines': ['foo', 'baz']}
    此方法的赋值为浅复制。替换副本中的值时(新值为新空间),原件不受影响。如果修改副本中的值(原地修改),原件也发生变化,因为原件指向的也是被修改的值。
    为避免这种问题,一种办法是执行深复制,可使用copy中的deepcopy
    >>> from copy import deepcopy
    >>> d = {}
    >>> d['names'] = ['Alfred', 'Bertrand']
    >>> c = d.copy()
    >>> dc = deepcopy(d)
    >>> d['names'].append('Clive')
    >>> c
    {'names': ['Alfred', 'Bertrand', 'Clive']}
    >>> dc
    {'names': ['Alfred', 'Bertrand']}
     
    fromkeys
    创建一个新字典,其中包含指定的键,每个键对应的值都是None
    >>> {}.fromkeys(['name', 'age'])
    {'age': None, 'name': None}
    也可提供特定的值
    >>> dict.fromkeys(['name', 'age'], '(unknown)')
    {'age': '(unknown)', 'name': '(unknown)'}
     
    get
    如果访问了字典中没有的项,将引发错误,而get不会
    >>> d = {}
    >>> print(d['name'])
    Traceback (most recent call last):
    File "<stdin>", line 1, in ?
    KeyError: 'name'
    >>> print(d.get('name'))
    None
    在没有时也可以返回其它指定值
    >>> d.get('name', 'N/A')
    'N/A'
    如果有要找的键,get与普通字典查找相同
    >>> d['name'] = 'Eric'
    >>> d.get('name')
    'Eric'
     
    items
    返回一个包含所有字典项的列表,其中每个元素都为(key, value)的形式。字典项在列表中的排列顺序不确定
    >>> d = {'title': 'Python Web Site', 'url': 'http://www.python.org', 'spam': 0}
    >>> d.items()
    dict_items([('url', 'http://www.python.org'), ('spam', 0), ('title', 'Python Web Site')])
    返回值属于一种名为字典视图的特殊类型
    还可确定其长度以及对其执行成员资格检查
    >>> it = d.items()
    >>> len(it)
    3
    >>> ('spam', 0) in it
    True
    视图的一个优点是不复制,它们始终是底层字典的反映,即便你修改了底层字典亦如此。
    >>> d['spam'] = 1
    >>> ('spam', 0) in it
    False
    >>> d['spam'] = 0
    >>> ('spam', 0) in it
    True
    (永不复制,只是关联)
    如果你想将字典项复制到列表中,可以这样:
    >>> list(d.items())
    [('spam', 0), ('title', 'Python Web Site'), ('url', 'http://www.python.org')]
     
    keys
    返回一个字典视图,包含字典中所有的键
    >>> dict = {'Name': 'Runoob', 'Age': 7}
    >>> dict.keys()
    dict_keys(['Name', 'Age'])
    >>> list(dict.keys()) # 转换为列表
    ['Name', 'Age']
     
    pop
    获取指定键的值并删除指定键值对
    >>> d = {'x': 1, 'y': 2}
    >>> d.pop('x')
    1
    >>> d
    {'y': 2}
     
    popitem
    随机弹出一个字典项,因为字典项的顺序是不确定的
     
    setdefault
    >>> d = {}
    >>> d.setdefault('name', 'N/A')
    'N/A'
    >>> d
    {'name': 'N/A'}
    >>> d['name'] = 'Gumby'
    >>> d.setdefault('name', 'N/A')
    'Gumby'
    >>> d
    {'name': 'Gumby'}
    指定的键不存在时,返回指定值并更新字典。存在就返回其值,字典不变
    如果没有指定值,默认为None
    >>> d = {}
    >>> print(d.setdefault('name'))
    None
    >>> d
    {'name': None}
     
    update
    使用一个字典来更新另一个字典
    >>> d = {
    ... 'title': 'Python Web Site',
    ... 'url': 'http://www.python.org',
    ... 'changed': 'Mar 14 22:09:15 MET 2016'
    ... }
    >>> x = {'title': 'Python Language Website'}
    >>> d.update(x)
    >>> d
    {'url': 'http://www.python.org', 'changed':
    'Mar 14 22:09:15 MET 2016', 'title': 'Python Language Website'}
     
    values
    返回字典中的值组成的字典视图
    >>> d = {}
    >>> d[1] = 1
    >>> d[2] = 2
    >>> d[3] = 3
    >>> d[4] = 1
    >>> d.values()
    dict_values([1, 2, 3, 1])
     
     
     
     
     
     
  • 相关阅读:
    二、静、动态代理(9~10)~~~~
    luogu P3572 [POI2014]PTA-Little Bird 单调队列优化dp
    luogu P6113 【模板】一般图最大匹配 带花树
    Codeforces Round #646 (Div. 2) C——Game On Leaves 思维
    Codeforces Round #646 (Div. 2) E——Tree Shuffling 思维
    luogu P2979 [USACO10JAN]Cheese Towers S 变形dp背包
    luogu P6577 【模板】二分图最大权完美匹配
    Educational Codeforces Round 88 (Rated for Div. 2) D
    Codeforces Round #645 (Div. 2) E
    Codeforces Round #645 (Div. 2) D
  • 原文地址:https://www.cnblogs.com/swefii/p/10805973.html
Copyright © 2011-2022 走看看