標籤:lte 編寫 key 工作 anti 語言 運行 列表 存在
#!/usr/bin/python# 字典# 當時學java的時候, 語言基礎就學了好久, 然後是各種API, 最後才是集合# 索引值對, 可變# 1. 映射操作D = {‘food‘ : ‘Spam‘, ‘quantity‘:4, ‘color‘:‘pink‘}print(D[‘food‘]) # 通過鍵來擷取值D[‘quantity‘] += 1 # 改變鍵對應的值# 另一種構造字典的方法D = {}D[‘name‘] = ‘Bob‘D[‘job‘] = ‘dev‘D[‘age‘] = 40# 在Python通過字典編寫的搜尋方法很快# 重訪嵌套rec = {‘name‘: {‘first‘:‘Bob‘, ‘last‘:‘Smith‘}, ‘job‘:[‘dev‘, ‘mgr‘], ‘age‘:40.5}rec[‘name‘]rec[‘name‘][‘last‘]rec[‘job‘]rec[‘job‘][-1] # ‘job‘鍵對應的列表的最後一個值rec[‘job‘].append(‘janitor‘)# 所建立的這些對象都不需要手動釋放, 有Python的自動垃圾收集# 2. 鍵的排序: for迴圈# 字典僅支援通過鍵擷取元素, 而且有時候還是無需的# 如鍋要對字典進行排序, 先擷取鍵的列表, 然後使用sort方法進行排序# 最後使用for迴圈逐個顯示結果Ks = list(D.keys()) # 無需列表Ks.sort() # 對key進行排序for key in Ks: print(key, ‘=>‘, D[key])for c in ‘spam‘: print(c.upper())x = 4while x > 0: print(‘spam!‘ * x) x -= 1# 迭代和最佳化squares = [ x ** 2 for x in [1, 2, 3, 4, 5]]print(squares)squares = []for x in [1, 2, 3, 4, 5]: squares.append(x ** 2)# 列表解析和相關的函數編程工具, 如map和filter, 通常運行得比for迴圈快# 首先為了簡單和可讀性去編寫代碼, 在程式可以工作, 並證實確實有必要考慮效能之後, 再考慮該問題# 關於這個python提供了time以及timeit和profile模組# 不存在的鍵: if 測試D = { ‘a‘ : 1, ‘c‘ : 3, ‘b‘ : 2}D[‘e‘] = 99# D[‘f‘] 鍵‘f‘不存在, 這樣使用會報錯的# in關聯運算式允許我們查詢字典中一個鍵是否存在if not ‘f‘ in D: print(‘missing key f in D‘)value = D.get(‘x‘, 0) # 擷取鍵‘x‘的值, 如果沒有擷取到那麼就是0付給value D[None] = 4 # None也可以作為鍵耶print(D)
python學習(五)字典學習