字典方法

  • clear()
  clear() 清楚字典中全部的项,无返回值(或者说范围None)

  • copy()
copy方法返回一个具备相同 键-值 的新字典(这个方法实现的是浅复制(shallow copy),由于值自己就是相同的,而不是副本)
x = {'username':'admin','machines':['foo','bar','baz']}
y = x.copy()
y['username'] = 'mlh'
y['machines'].remove('bar')
print y  #输出 {'username': 'mlh', 'machines': ['foo', 'baz']}
print x  #输出 {'username': 'admin', 'machines': ['foo', 'baz']}
能够注意到,当在副本中替换值的时候,原始字典不受影响,但若是修改某个值(原地修改,不是替换),原始字典也会改变,由于一样的值也存储在原字典中
使用 深赋复制 (deep copy)复制其包含的全部值,可以使用 copy 模块的 deepcopy 函数来完成
from copy import deepcopy
d = {}
d['name'] = ['A','B']
print d               #输出 {'name': ['A', 'B']} 
c = d.copy()
cd = deepcopy(d)
d['name'].append('C') #直接在键中映射的添加值 
print d               #输出 {'name': ['A', 'B', 'C']}
print cd              #输出 {'name': ['A', 'B']}

  • fromkeys()
fromkeys 方法使用给定的键创建新的字典,每一个键都对应一个默认的值 None
print {}.fromkeys(['name','age'])
print dict.fromkeys('name','age')
print dict.fromkeys(['name','age'])
print dict.fromkeys(['name','age'],'(a)')


#输出
{'age': None, 'name': None}
{'a': 'age', 'e': 'age', 'm': 'age', 'n': 'age'}
{'age': None, 'name': None}
{'age': '(a)', 'name': '(a)'}

  • get()
get() 方法是更宽松的访问字典项的方法,通常来讲,若是试图访问字典中不存在的项目时会出错,可是 get() 不会,
d1 = {}
d2 = {'name':'a'}
print d1.get('name')
print d1.get('name','b')  #能够结果为默认值 None 的进行修改
print d2.get('name')      #根据键访问值

#输出
None
b
a

  • has_key()
d.has_key()与表达式 k in d 同样,可是Python 3.0不包括此函数

  • keys() 和 iterkeys()
keys() 方法将字典中的键以列表形式返回,而 iterkeys 则返回针对键的 迭代器对象

  • items()和iteritems()
items() 方法将字典全部项以列表方式返回,列表中的每一项都表示为(键,值)对的形式,可是项在返回时并无遵循特定的次序
d2 = {'name':'a','sex':'d','j':'m'}
print d2.items()

#输出
[('j', 'm'), ('name', 'a'), ('sex', 'd')]
iteritems() 方法大体相同,可是返回的是一个 迭代器对象

  • pop()
pop() 方法用来得到对应于给定键的值,而后将这个键-值对从字典中移除
d = {'x':1,'y':2}
print d.pop('x')
print d

#输出
1
{'y': 2}
  • popitem() 
popitem() 方法相似与 list.pop,后者会弹出列表的最后一个元素,但不一样的是,popitem弹出随机项,由于字典并无“最后的元素”或者其余有关顺序的概念,若想一个接一个地移除并处理项,这个方法就很是有效了(由于不用首先获取键的列表)
尽管 popitem() 和列表 pop 方法很相似,但字典中没有与 append() 等价的方法,由于字典是无序的,相似于 append() 的方法无任何意义的

  • setdefault()
setdefault() 方法在某种程度上与相似与get(),可以得到给定键相关联的值,除此以外,setdefault() 还能在字典中不含有给定键的状况下设定相应的键值

  • update()
提供字典中的项会被添加到旧的字典中,如有相同的键则会进行覆盖
update() 方法能够使用和调用 dict() 函数(或者类型构造函数)一样的方式进行调用
d2 = {'name':'a','sex':'d','j':'m'}
x = {'sex':'c'}
d2.update(x)
print d2

# 输出
{'j': 'm', 'name': 'a', 'sex': 'c'}

  • values() 和 itervalues()
values() 方法以列表的形式返回字典中的值(itervalues返回值的迭代器)。与返回键的列表不一样的是,返回值的列表中能够包含重复的元素
d1 = {}
d2 = {'name':'a','sex':'d','j':'m'}
print d2.values()

#输出
['m', 'a', 'd']
相关文章
相关标签/搜索