我以爲我dict用的很熟了,但是真正再去用的時候發現還是底子太薄,太多地方容易出錯了;
- dict的創建:
d = dict()
# or 更簡單
d = {}
這樣創建了一個新的dict,不包含任何key,value
- dict的插入和賦值:
如果我不知道一個dict對象裏是否有dict[key]的話,我要先判斷一下:
用has_key()
返回boolean變量
if d.han_key('key'):
#do something...
一個例子:
比如說我有一個list,裏面有重複的元素,我要統計所有元素出現的次數
list = [1,2,2,3,4,2,3,3]
d = dict()
for element in list:
if d.has_key(element):
d[element] += 1
else:
d[element] = 1
- dict的遍歷:
一種簡單的方法吧,Python2.7
是這麼用,記住一種就好
for k,v in dict.iteritems():
print '%s:%s' % (k, v)
其中iteritems()
返回了一個dictionary-itemiterator object
相比items()
返回的就是一個list, list的每個元素爲一個tuple, 如:
[('a', 1), ('b', 2)]
- dict的排序:
排序,其實是將dict裏的元素都轉化到一個list, list的每個元素爲一個tuple;然後對這個list進行操作。
我仔細想了一下,dict排序有意義嗎?我意思是我致力於去實現我把所有的元素排完序再放回去是有序的,這個本身是不現實的,因爲dict的創建和維護並不是按照連續的內存,而是哈希的。
所以我們只能得到一個有序的list,無法得到一個有序的dict
所以如果知道排序的思想,用items()
抽出來,再對list排序就好了。