在開發過程中通常要對字典進行排序,複製等操作,和列表一樣,字典的排序也採用sorted()函式,字典的複製除了可以使用update()函式外,還可以使用copy()函式,但是得注意二者之間的區別。
字典的排序
先來演示字典的排序函式sort()的使用:
print dict
#按照key進行排序。items可以用於字典的遍歷,返回(key,value)的序列,lampda用於建立匿名函式,並返回計算結果,d[0]表示key
print sorted(dict.items(), key=lampda d:d[0])
#按照value進行排序。同樣d[1]表示value
print sorted(dict.items(), key=lampda d:d[1])
字典的複製
字典的複製前面用的是update函式,這個方法是將字典a中的資料複製到字典b中,且字典中原有的資料保持不變,從而實現了字典b中資料的擴充。但是sorted不同,將字典a中的資料複製到字典b中,update會清除掉字典b中原有的資料。另外copy函式實現的是字典的淺拷貝,deepcopy函式用於實現深拷貝。
下面演示copy函式的使用。
dict2 =
dict2 = dict.copy()
print dict2
淺拷貝只是複製資料,資料的引用並沒有被複製,因此新的資料和舊的資料使用同一塊記憶體塊,深拷貝則不一樣,它拷貝物件內部所有資料和引用,相當於c語言中指標的作用。例如:字典b淺拷貝字典a中的資料,如果字典b中的資料發生修改,字典a中的資料也將發生變化;但是如果字典b深拷貝字典a中的資料,則即使b中的資料變了,a中也不會變。
下面演示深拷貝和淺拷貝:
import copy
dict2 =
#copy.deepcopy等價於dict.deepcopy
dict2 = copy.deepcopy(dict)
#copy.copy 等價於dict.copy
dict3 = copy.copy(dict)
dict2["a"]="watermelon"
print dict
dict3["a"]="watermelon"
print dict
Python中字典的複製和引用
author lxp 自定義函式 a p2 def myfunc pinfo print print pinfo pinfo 33 pinfo 33 0.0088 print pinfo pinfo 33 0.0044 print pinfo print myp p a print myp.ps m...
python 字典和巢狀字典排序
正常字典的排序我們都知道,像這樣 a b sorted a.items key lambda x x 1 就會輸出如下結果 101,0 100,1 102,2 那如果是巢狀字典呢,比如 a 101 102 實際上是類似的,我們只要理解了上面這個key的含義,lambda可以理解為乙個函式,輸出為x ...
python 字典的淺複製與深複製
copy 方法返回乙個新字典,包含的鍵值對與原來的字典相同,這個方法執行的是淺複製,因為值本身是原件,而非副本 如上圖所示,當替換副本中的值時,原件不受影響。然而修改副本中的值,原件也將發生變化,因為這是就地修改而不是替換,原件指向的也是被修改的值。即淺複製的副本發生替換時,原件不受影響,發生修改時...