特殊的字典 cookbook讀書筆記

2021-08-09 08:31:57 字數 1555 閱讀 8799

一鍵對多個值,只支援兩種多值list和set,其它操作都類似

>>> from collections import defaultdict

>>> d = defaultdict(list)

>>> d

defaultdict(, )

>>> s = defaultdict(set)

>>> s['a'].add(1)

>>> s['a'].add(2)

>>> s['b'].add('ok')

>>> s['b'].add(3)

>>> s

defaultdict(, , 'b': })

>>> from collections import ordereddict

>>> d = ordereddict()

>>> d['a'] = 1

>>> d['b'] = 'ok'

>>> d['c'] = 3

>>> d['e'] = 4

>>> d

ordereddict([('a', 1), ('b', 'ok'), ('c', 3), ('e', 4)])

>>> d['b'] = 2

>>> d

ordereddict([('a', 1), ('b', 2), ('c', 3), ('e', 4)])

counter自動生成乙個統計字典:

字典key為被統計元素,字典value為統計數量;

most_common(n)函式可以統計出最多的前n項;

counter 生成的字典支援加減運算。

>>> from collections import counter

>>> words = [

... 'look', 'into', 'my', 'eyes', 'look', 'into', 'my', 'eyes',

... 'the', 'eyes', 'the', 'eyes', 'the', 'eyes', 'not', 'around', 'the',

... 'eyes', "don't", 'look', 'around', 'the', 'eyes', 'look', 'into',

... 'my', 'eyes', "you're", 'under'

... ]

>>> word_counts = counter(words)

>>> top_three = word_counts.most_common(3)

>>> top_three

[('eyes', 8), ('the', 5), ('look', 4)]

>>> word_counts['not']

1>>> morewords = ['why','are','you','not','looking','in','my','eyes']

>>> b = counter(morewords)

>>> word_counts-b

counter()

序列的操作 cookbook讀書筆記

如果序列上的值都是hashable 型別,那麼可以很簡單的利用集合或者生成器來解決這個問題。如果你想消除元素不可雜湊 比如dict 型別 的序列中重複元素的話,將序列元素轉換成hashable 型別進行比較即可。def dedupe items,key none seen set for item ...

檔案目錄操作 cookbook讀書筆記

使用os.path 模組中的函式來完成多數操作 使用os.path 來進行檔案測試是很簡單的。在寫這些指令碼時,可能唯一需要注意的就是你需要考慮檔案許可權的問題,特別是在獲取元資料時候 import os path users beazley data data.csv get the last c...

類與物件 cookbook讀書筆記

重新定義它的 str 和 repr 方法,使用str 或print 函式會輸出 str 字串 更適合人閱讀的字串 repr 函式返回 repr 字串 更適合機器閱讀 repr 生成的文字字串標準做法是需要讓eval repr x x 為真。如果實在不能這樣子做,應該建立乙個有用的文字表示,並使用 和...