iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 11
0
Software Development

python 自學系列 第 11

python day11 (dictionaries)

  • 分享至 

  • xImage
  •  

dictionaries

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'

上一篇
python day10 (sets、iteration)
下一篇
python day12 (Functions)
系列文
python 自學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言