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])            
上一篇:L1-042 日期格式化 Python


下一篇:模块