天天看點

python資料類型之字典表

字典表的資料形态是怎樣的?可以進行什麼操作?字典表和清單很像,但是具體有什麼差異呢?

字典表的聲明

  1. 通過{‘鍵1’: 值, ‘鍵2’: 值, … }
  1. 通過dict函數 dict(鍵 = 值)注意鍵不需要加引号

值可以取任何資料類型,但定義一個字典表的鍵時,必須要用不可變的類型(不支援原位改變),如字元串、數字和元組。

emp = {'name':'mike', 'age': 20, 'job': 'dev'}

dict2 = { 'abc': 1,'b2':2, 666: 3 ,(20,30):4}
           

擷取

emp['name']
emp.get('name')

emp.get('Name',0.0)#找不到則結果顯示0.0
           

原位改變

  1. 如果要修改原有鍵的值,可以直接重新指派:
emp['name'] = 'jerry'
print(emp)

Out[1]: {'name': 'jerry', 'age': 20, 'job': 'dev'}
           
  1. 如果要增加一個鍵:
emp['year'] = 8

Out[2]: {'name': 'mike', 'age': 20, 'job': 'dev', 'year': 8}
           
  1. 如果要增加多個鍵,可以利用emp.update方法:
dep = {'department' : 'ABC','abc': 1,'b2':2, 666: 3 }

emp.update(dep)
           
  1. 如果要減少一個鍵,可以利用emp.pop的方法:

檢視鍵和值

emp.keys()

emp.values()

emp.items()
           

傳回的結果不是清單,不能進行python3預設的所有清單操作,但可以周遊:

for k in emp.keys(): print(k)

for v in emp.values(): print(v)

for k,v in emp.items(): print('{} => {}'.format(k, v))
           

如果是字典表有嵌套的情況:

emp = {'name': {'first': 'mike', 'last' : 'jerry'},'age': 20, 'job': 'dev'}

emp.get('name')

emp['name']['first']
           

排序

Python 3.6 改寫了 dict 的内部算法,是以 3.6 的 dict 是有序的,在此版本之前皆是無序

  1. 将keys()放入清單
d= {'a': 1, 'b':2}

ks = list(d.keys())

ks.sort()

for k in ks: print(d.get(k))
           
  1. 使用全局函數sorted,可以運用在可疊代對象上
d= {'a': 1, 'b':2}

ks = d.keys()

for k in sorted(ks):

print(k, d.get(k))