python學習(七)字典學習

 

 

 

#!/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)
相關文章
相關標籤/搜索