[Python] Easy Dictinoary
最近有點忙, 來更新一個簡易的工具, ML 晚點再更新
python 有個很好用的工具 - dictionary, 基本上就是 key, value 的 data structure
使用相當簡單
Code:
Result:
同樣的結果也可以這樣給值
那常見的還有印出所有 keys 或者是印出 dict 所有內容
而使用 dictionary 可能常常會去判斷是不是有已經有此 key, 有的話 value +1, 沒有的話 value = 1
寫法常見如下:
Code:
因為 dictionary 預設是空值, 所以都要做這樣的設定
Q: 如果今天我們想要有初始值的 dictionary 呢?
A: 其實在 python 的 collections library 有一個 defaultdict 可以預設初始值
Code
也就是不用多那個 if 判斷, 因為他是偵測如果沒有這個 key, 他會先設定成 0 然後再 +1
Q: 那如果想要紀錄一些資料進出, 結果後來要刪除最舊的資料, 這種帶有 order 的屬性的時候, 要怎麼辦呢?
A: 笨一點或許就在 value 那邊加入時間的內容, 然後要刪除先比對, 有那麼一點不好用
當然最常見的實作是多一個 list 去紀錄 key 進入的順序, 這樣就可以了
不過 collections 還有一個 OrderedDict, 他可以 FIFO or LIFO 的方式去刪除 dict 裡面的資料
而且用法跟原本的幾乎一樣, 只是差在要刪除的時候要下 poptime 跟 last 參數
例如:
Code:
Result:
可以看出來只剩下中間的 item, 當然以上不能用太舊的 python
python 有個很好用的工具 - dictionary, 基本上就是 key, value 的 data structure
使用相當簡單
Code:
sample = {} sample['a'] = 5 sample['b'] = 3 sample['c'] = 2 print sample
Result:
{'a': 5, 'c': 2, 'b': 3}
同樣的結果也可以這樣給值
sample = {'a': 5, 'c': 2, 'b': 3}
那常見的還有印出所有 keys 或者是印出 dict 所有內容
print sample.keys() # 可以查出所有的 keys for k, v in sample.items() # 可以印出所有 key, value pair print k, v
而使用 dictionary 可能常常會去判斷是不是有已經有此 key, 有的話 value +1, 沒有的話 value = 1
寫法常見如下:
Code:
key = 'a' if key in sample: # 用 in 就夠簡白了, 還有很多其他方法並沒有比較快 sample[key] += 1 else: sample[key] = 1
因為 dictionary 預設是空值, 所以都要做這樣的設定
Q: 如果今天我們想要有初始值的 dictionary 呢?
A: 其實在 python 的 collections library 有一個 defaultdict 可以預設初始值
Code
from collections import defaultdict sample = defaultdict(lambda: 0) key = 'a' sample[key] += 1
也就是不用多那個 if 判斷, 因為他是偵測如果沒有這個 key, 他會先設定成 0 然後再 +1
Q: 那如果想要紀錄一些資料進出, 結果後來要刪除最舊的資料, 這種帶有 order 的屬性的時候, 要怎麼辦呢?
A: 笨一點或許就在 value 那邊加入時間的內容, 然後要刪除先比對, 有那麼一點不好用
當然最常見的實作是多一個 list 去紀錄 key 進入的順序, 這樣就可以了
不過 collections 還有一個 OrderedDict, 他可以 FIFO or LIFO 的方式去刪除 dict 裡面的資料
而且用法跟原本的幾乎一樣, 只是差在要刪除的時候要下 poptime 跟 last 參數
例如:
Code:
from collections import OrderedDict sample = OrderedDict() sample['a'] = 5 sample['b'] = 3 sample['c'] = 2 sample.popitem(last=False) # 刪除最早輸入的那筆 sample['a'] = 5 print 'Delete first: ', sample sample.popitem(last=True) # 刪除最後輸入的那筆 sample['c'] = 2 print 'Delete Last: ', sample
Result:
Delete first: OrderedDict([('b', 3), ('c', 2)]) Delete Last: OrderedDict([('b', 3)])
可以看出來只剩下中間的 item, 當然以上不能用太舊的 python
Casinos in Las Vegas | Dr.MD
回覆刪除Find the best 화성 출장마사지 casinos near 김천 출장안마 you in Las Vegas, Nevada, USA and find a 구리 출장마사지 bonus 창원 출장샵 code for the best no deposit bonuses at 화성 출장안마 Casino: Borgata Hotel & Casino; MGM Grand Las Vegas