#!/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 = 4 while 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)