字典方法

  • 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']
相關文章
相關標籤/搜索