Python數據結構-dict

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,可是但願是按照輸入的順序,由於輸入順序是有序的

不然還須要從新把遍歷到的值排序

相關文章
相關標籤/搜索