91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用Python內置庫collections

發布時間:2021-11-20 15:15:16 來源:億速云 閱讀:644 作者:iii 欄目:編程語言

這篇文章主要講解了“怎么使用Python內置庫collections”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么使用Python內置庫collections”吧!

Python中有很多好用的內置的模塊,比如datatime、json等等,本文介紹下collections模塊的使用。使用collections模塊時,首先要導入模塊,如下所示:

import collections

我們首先介紹下OrderedDict模塊的使用。在Python3.5(含)中字典是無序的,即不會按照使用者插入的順序排序,如下所示,打印結果我們發現輸出并沒有按輸入的順序輸出。

x = dict() # 無序字典
x['stock1'] = "600213"
x['stock2'] = "600223"
x['stock3'] = "600233"
print(x) # {'stock1': '600213', 'stock3': '600233', 'stock2': '600223'}

使用operator.itemgetter對字典排序后,返回的是一個list變量,而不是字典,倘若再將這個list轉換為字典后,會發現又變回了無序字典。如下所示:

x = {"stock1": "600213", "stock2": "600223", "stock3": "600233"}
sorted_x = sorted(x.items(), key=operator.itemgetter(0))
print(type(x)) # <class 'dict'>
print(type(sorted_x)) # <class 'list'>
print(dict(sorted_x)) # {'stock1': '600213', 'stock3': '600233', 'stock2': '600223'}

如果要使字典保持我們插入的順序怎么辦呢?可以用collections.OrderedDict來初始化字典,使無序字典成為有序字典,如下所示:

x = OrderedDict()
x['stock1'] = "600213"
x['stock2'] = "600223"
x['stock3'] = "600233"
print(x) # OrderedDict([('stock1', '600213'), ('stock2', '600223'), ('stock3', '600233')])
print(type(x)) # <class 'collections.OrderedDict'>

OrderedDict生成的字典支持如下屬性:

# values() 獲取字典所有的value,返回一個列表
print(x.values()) # odict_values(['600213', '600223', '600233'])
# setdefault() 獲取指定key的value,如果key不存在,則創建
val = x.setdefault('stock4')
print(val, x) # None OrderedDict([('stock1', '600213'), ('stock2', '600223'), ('stock3', '600233'), ('stock4', None)])
# popitem() 按照后進先出原則,刪除最后加入的元素,返回key-value
print(x.popitem(), x) # ('stock4', None) OrderedDict([('stock1', '600213'), ('stock2', '600223'), ('stock3', '600233')])
# pop() 獲取指定key的value,并在字典中刪除
k = x.pop('stock1')
print(k, x) # 600213 OrderedDict([('stock2', '600223'), ('stock3', '600233')])
# keys() 獲取字典所有的key
print(x.keys())
# clear() 清空有序字典
#x.clear()
# copy() 拷貝
new_dic = x.copy()
print(new_dic)
# items(返回由“鍵值對組成元素“的列表)
print(x.items())
# fromkeys() 指定一個列表,把列表中的值作為字典的key, 生成一個字典
dic = OrderedDict()
name = ['allen', 'belln', 'cllen']
print(dic.fromkeys(name)) # OrderedDict([('allen', None), ('belln', None), ('cllen', None)])
print(dic.fromkeys(name, 20)) # OrderedDict([('allen', 20), ('belln', 20), ('cllen', 20)])

從Python 3.6開始,Python的字典底層機制更改后已經變成為有序字典了。雖然collections.OrderedDict的使用價值降低了,不過collections中的defaultdict仍然很有用,它可以實現一鍵多值的字典,如下所示:

y = defaultdict(list) # 一鍵多值字典使用defaultdict
y["stock"].append("600213")
y["stock"].append("600223")
y["stock"].append("600413")
y["stock"].append("600513")
y["stock"].append("600225")
y["stock"].append("600273")
print(y) # defaultdict(<class 'list'>, {'stock': ['600213', '600223', '600413', '600513', '600225', '600273']})

接下來再介紹下collections中的Counter。Counter是一個簡單的計數器,目的是用來跟蹤值出現的次數。Counter以字典的鍵值對形式存儲值出現的次數,如下所示:

c_dict = Counter('yyydadyyyaadadsaaaxxxx')
print(c_dict) # Counter({'a': 7, 'y': 6, 'd': 4, 'x': 4, 's': 1})

當然也可以使用for循環實現跟蹤值出現的次數,如下所示,不過使用Counter更加高效。

data = 'yyydadyyyaadadsaaaxxxx'
val_cnt = {}
for i in data:
 i_cnt = val_cnt.get(i,0) # 查找鍵的值
 val_cnt[i] = i_cnt + 1
print(val_cnt) # {'y': 6, 'd': 4, 'a': 7, 's': 1, 'x': 4}
print(val_cnt.get('a')) # 7

最后我們再介紹一下ChainMap,它可以加速字典的合并。通常我們合并字典的方式如下所示:

dicta = {i: i + 1 for i in range(1, 100, 2)}
dictb = {i: i + 2 for i in range(1, 100, 2)}
dictc = {i: i + 3 for i in range(1, 100, 2)}
dictd = {i: i + 4 for i in range(1, 100, 2)}
dic_total = dicta.copy()
dic_total.update(dictb)
dic_total.update(dictc)
dic_total.update(dictd)
print(dic_total)
print(dic_total.get(3, 0))

使用更高效的ChainMap方法,如下所示:

dic_total = ChainMap(dicta, dictb, dictc, dictd)

感謝各位的閱讀,以上就是“怎么使用Python內置庫collections”的內容了,經過本文的學習后,相信大家對怎么使用Python內置庫collections這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

福贡县| 山丹县| 六盘水市| 察雅县| 陆良县| 漯河市| 新乡市| 肥西县| 岳普湖县| 马龙县| 桃园市| 旺苍县| 二连浩特市| 肥西县| 六枝特区| 偏关县| 绥化市| 石泉县| 宿迁市| 阆中市| 勐海县| 手游| 长治县| 抚州市| 高密市| 永年县| 临城县| 乌苏市| 偏关县| 平潭县| 庄河市| 苏尼特右旗| 繁昌县| 财经| 普兰县| 安阳市| 五寨县| 峨眉山市| 原阳县| 留坝县| 凤城市|