python 的 dictionaries 是一種 key-value 的資料格式,可以很快的查找到需要的 key 的 value.如下 key 為 1 的值是 'Daniel'.
>>> users = {1:'Daniel' , 2:'Sam' , 3:'Jack'}
>>> type(users)
<class 'dict'>
>>> print(users)
{1: 'Daniel', 2: 'Sam', 3: 'Jack'}
透過 key 取得 value.
>>> users[1]
'Daniel'
也可以使用 get key 取得值,使用 get 還有個好處是當 key 不存在時可以給個 default 值.
>>> users.get(1)
'Daniel'
>>> users.get(5,'Not Found')
'Not Found'
也可以使用 dict 建構子建立.
>>> users = dict([('user1','Daniel'), ('user2','Sam')])
>>> users['user2']
'Sam'
新增資料到 dictionaries.
>>> users['user3']='Jack'
>>> print(users)
{'user1': 'Daniel', 'user2': 'Sam', 'user3': 'Jack'}
一樣使用 in 和 not in 判斷 key 是否存在 dictionaries.
>>> 'user1' in users
True
>>> 'user1' not in users
False
使用 for in 可以取得 dictionaries 所有的 key.再透過 key 從 dictionaries 取得 value.
>>> for user in users:
... print(user,users[user])
...
user1 Daniel
user2 Sam
user3 Jack
透過.values()
就可以直接取得所有值.
>>> for user in users.values():
... print(user)
...
Daniel
Sam
Jack
透過.items()
取得所有的 key 和 value.
>>> for i,user in users.items():
... print(i,user)
...
user1 Daniel
user2 Sam
user3 Jack
>>>
取得 dictionaries 的大小.
>>> len(users)
3
刪除 dictionaries 的元素.
>>> users.pop('user2')
'Sam'
>>> print(users)
{'user1': 'Daniel', 'user3': 'Jack'}
將兩個 dictionaries 合併成新的 dictionaries.
>>> users = dict([('user1','Daniel'), ('user2','Sam')])
>>> student = dict([('student1','James'), ('student2','Ray')])
>>> temp_users = users.copy()
>>> temp_users.update(student)
>>> print(temp_users)
{'user1': 'Daniel', 'user2': 'Sam', 'student1': 'James', 'student2': 'Ray'}
或
>>> print(dict(users.items() | student.items()))
{'user1': 'Daniel', 'student1': 'James', 'user2': 'Sam', 'student2': 'Ray'}
python 3.5 以上可以使用下列方式合併.
>>> print({**users , **student})
{'user1': 'Daniel', 'user2': 'Sam', 'student1': 'James', 'student2': 'Ray'}
使用 sorted 來對 key 排序.
>>> user_info = dict(Daniel=20,Sam=30,Jack=40)
>>> for user in user_info:
... print(user)
...
Daniel
Sam
Jack
>>> for user in sorted(user_info):
... print(user)
...
Daniel
Jack
Sam
>>> for user in sorted(user_info,reverse=True):
... print(user)
...
Sam
Jack
Daniel
dictionaries 可以存不同的型態,但不建議這麼做容易造成不可預期的錯誤,key 或 value 最好就都是各自一樣的型態.
>>> mix_user_info = dict([(1,'Daniel') , ('user2','Sam') , ('Jack',50)])
>>> print(mix_user_info)
{1: 'Daniel', 'user2': 'Sam', 'Jack': 50}
>>> mix_user_info.get('Jack')
50
>>> mix_user_info.get(1)
'Daniel'