1)定義python
Key-value鍵值對的數據的集合,可變的無序的,key不重複app
2) 初始化,定義.dom
d={} 空的函數
d=dict(a=1,b=2) {'a': 1, 'b': 2}
類方法。d=dict.fromkeys(range(5))對象
d=dict.fromkeys(range(5),0)排序
dict(**kwargs) 使用name=value對初始化一個字典內存
dict(iterable, **kwarg) 使用可迭代對象和name=value對構造字典,不過可迭代對象的元素必須是一個二元結構字符串
d = dict(((1,'a'),(2,'b'))) 或者 d = dict(([1,'a'],[2,'b']))get
dict(mapping, **kwarg) 使用一個字典構建另外一個字典string
d = {'a':10, 'b':20, 'c':None, 'd':[1,2,3]}
3) 字典元素的訪問
d[key] 返回key對應的值。
key不存在拋出KeyError異常
get (key[,default]) d.get(6,2000)不會報錯。 key 不存在返回缺省值。
返回key對應的值value
key不存在返回缺省值,若是沒有設置缺省值就返回None
setdefault(key[,default])
setdefault(100,300)不存在的話建立,存在的話不改變。
返回key對應的值value
key不存在,添加kv對,value爲default,並返回default,若是default沒有設置,缺省爲None
4) 增長和修改。
d=[key]=100將key對應的值修改成value。建立後直接賦值。Key存在不變,不存在直接賦值。Key是惟一的,key的位置是隨機的。
d[key] = value
將key對應的值修改成value
key不存在添加新的kv對
update([other]) -> None
使用另外一個字典的kv對更新本字典
key不存在,就添加
key存在,覆蓋已經存在的key對應的值
就地修改
d.update(red=1)
d.update((('red',2),))
d.update({'red':3})
5)字典刪除。
pop(key[,default])。彈出元素。pop(key)
popitem () 移除並返回一個任意的鍵值對。
返回的是二元組,,key和value對應的。
clear()清空字典。
6)字典刪除del。
del實際上刪除的是名稱,而不是對象。本質上減小了一個對象的引用。
7)字典的遍歷。 for i in dict 拿出全部的key。拿到的都是key值。
遍歷k
for k in d.keys(): for k in d:
print(k) print(k)
for key in d.keys():
print(key)
遍歷value
for value in d.values(): for k in d:
print(value) print(d.get(k))
for k in d:
print(d[k]) for k in d.keys():
print(d.get(k))
遍歷k,v對
for key,value in d.items():
print(key,value)
for k ,_ in d.items():
print(k)
for _,v in d.items():
print(v)
8)字典遍歷的總結。
Keys,values,Items方法返回一個相似一個生成器的可迭代對象,不會把函數的返回值複製到內存中。
dictionary view對象。
字典的entry的動態的試圖,字典變化,視圖將反應出這些變化。
9) 字典遍歷和移除元素
移除字符串,str。
keys=[]
for k in keys:
d.pop(k)
print(k)
for 循環過程當中是堅定不容許移除元素的。
10)字典的key
要求必須和set的元素要求一致,,
Key必須可hash,key是去重複的。
d = {1 : 0, 2.0 : 3, "abc" : None, ('hello', 'world', 'python') : "string", b'abc' : '135'}
{1: 0, 2.0: 3, b'abc': '135', 'abc': None, ('hello', 'world', 'python'): 'string'}
11) defaultdict
collections.defaultdict([default_factory[, ...]])
collentions.default
import random
from collections import defaultdict
d=defaultdict(list)
for i in 'abcdef':
for i in range(random.randint(1,5)):
d[k].append(i)
print(d)
12) ordereddict有序的字典。
collections.OrderedDict([items])
key並非按照加入的順序排列,可使用OrderedDict記錄順序
from collections import OrderedDict
import random
d={'banana':3,'apple':4,'pear':1,'orange':2}
print(d)
keys=list(d.keys())
random.shuffle(keys)
print(keys)
od=OrderedDict()
for key in keys:
od[key]=d[key]
print(od)
print(od.keys())
有序字典能夠記錄元素插入的順序,打印的時候也是按照這個順序輸出打印。
應用的用途:
假如使用字典記錄了N個產品,這些產品使用ID由小到大加入到字典中
除了使用字典檢索的遍歷,有時候須要取出ID,可是但願是按照輸入的順序,由於輸入順序是有序的
不然還須要從新把遍歷到的值排序