總結十個Python 字典用法的使用技巧
字典(Dictionary)是Python提供的一種常用的資料結構,它用於存放具有對映關係的資料,由鍵(key)和值(value)成對組成,鍵和值中間以冒號:隔開,項之間用逗號隔開,整個字典由大括號{}括起來,格式如下:
dic = {key1 : value1, key2 : value2 }
字典也被稱作關聯陣列或雜湊表,下面是幾種常見的字典建立方式:
# 方法1 dic1 = { 'Author' : 'Python' , 'age' : 99 , 'sex' : '男' } # 方法2 lst = [('Author', 'Python'), ('age', 99), ('sex', '男')] dic2 = dict(lst) # 方法3 dic3 = dict( Author = 'Python', age = 99, sex = '男') # 方法4 list1 = ['Author', 'age', 'sex'] list2 = ['Python', 99, '男'] dic4 = dict(zip(list1, list2))
字典建立的方式還有很多種,這裡不再贅述。
字典由 dict 類代表,可以使用 dir(dict) 來檢視該類包含哪些方法,輸入 ,可以看到如下輸出結果:
print('methods = ',methods) methods = ['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
字典的方法和屬性有很多種,這裡我們重點介紹以下11種方法:
['clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
clear() 用於清空字典中所有元素(鍵-值對),對一個字典執行 clear() 方法之後,該字典就會變成一個空字典:
list1 = ['Author', 'age', 'sex'] list2 = ['Python', 99, '男'] dic1 = dict(zip(list1, list2)) # dic1 = {'Author': 'Python', 'age': 99, 'sex': '男'} dic1.clear() # dic1 = {}
copy() 用於返回一個字典的淺複製:
list1 = ['Author', 'age', 'sex'] list2 = ['Python', 99, '男'] dic1 = dict(zip(list1, list2)) dic2 = dic1 # 淺複製: 引用物件 dic3 = dic1.copy() # 淺複製:深複製父物件(一級目錄),子物件(二級目錄)不複製,還是引用 dic1['age'] = 18 # dic1 = {'Author': 'Python', 'age': 18, 'sex': '男'} # dic2 = {'Author': 'Python', 'age': 18, 'sex': '男'} # dic3 = {'Author': 'Python', 'age': 99, 'sex': '男'}
其中 dic2 是 dic1 的引用,所以輸出結果是一致的,dic3 父物件進行了深複製,不會隨dic1 修改而修改,子物件是淺複製所以隨 dic1 的修改而修改,注意父子關係。
擴充深複製:copy.deepcopy()
import copy list1 = ['Author', 'age', 'sex'] list2 = ['Python', [18,99], '男'] dic1 = dict(zip(list1, list2)) dic2 = dic1 dic3 = dic1.copy() dic4 = copy.deepcopy(dic1) dic1['age'].remove(18) dic1['age'] = 20 # dic1 = {'Author': 'Python', 'age': 20, 'sex': '男'} # dic2 = {'Author': 'Python', 'age': 20, 'sex': '男'} # dic3 = {'Author': 'Python', 'age': [99], 'sex': '男'} # dic4 = {'Author': 'Python', 'age': [18, 99], 'sex': '男'}
dic2 是 dic1 的引用,所以輸出結果是一致的;dic3 父物件進行了深複製,不會隨dic1 修改而修改,子物件是淺複製所以隨 dic1 的修改而修改;dic4 進行了深複製,遞迴複製所有資料,相當於完全在另外記憶體中新建原字典,所以修改dic1不會影響dic4的資料
fromkeys() 使用給定的多個鍵建立一個新字典,值預設都是 None,也可以傳入一個引數作為預設的值:
list1 = ['Author', 'age', 'sex'] dic1 = dict.fromkeys(list1) dic2 = dict.fromkeys(list1, 'Python') # dic1 = {'Author': None, 'age': None, 'sex': None} # dic2 = {'Author': 'Python', 'age': 'Python', 'sex': 'Python'}
get() 用於返回指定鍵的值,也就是根據鍵來獲取值,在鍵不存在的情況下,返回 None,也可以指定返回值:
list1 = ['Author', 'age', 'sex'] list2 = ['Python', [18,99], '男'] dic1 = dict(zip(list1, list2)) Author = dic1.get('Author') # Author = Python phone = dic1.get('phone') # phone = None phone = dic1.get('phone','12345678') # phone = 12345678
items() 獲取字典中的所有鍵-值對,一般情況下可以將結果轉化為列表再進行後續處理:
list1 = ['Author', 'age', 'sex'] list2 = ['Python', [18,99], '男'] dic1 = dict(zip(list1, list2)) items = dic1.items() print('items = ', items) print(type(items)) print('items = ', list(items)) # items = dict_items([('Author', 'Python'), ('age', [18, 99]), ('sex', '男')]) ## items = [('Author', 'Python'), ('age', [18, 99]), ('sex', '男')]
keys() 返回一個字典所有的鍵:
list1 = ['Author', 'age', 'sex'] list2 = ['Python', [18,99], '男'] dic1 = dict(zip(list1, list2)) keys = dic1.keys() print('keys = ', keys) print(type(keys)) print('keys = ', list(keys)) # keys = dict_keys(['Author', 'age', 'sex']) ## keys = ['Author', 'age', 'sex']
pop() 返回指定鍵對應的值,並在原字典中刪除這個鍵-值對:
list1 = ['Author', 'age', 'sex'] list2 = ['Python', [18,99], '男'] dic1 = dict(zip(list1, list2)) sex = dic1.pop('sex') print('sex = ', sex) print('dic1 = ',dic1) # sex = 男 # dic1 = {'Author': 'Python', 'age': [18, 99]}
popitem() 刪除字典中的最後一對鍵和值:
list1 = ['Author', 'age', 'sex'] list2 = ['Python', [18,99], '男'] dic1 = dict(zip(list1, list2)) dic1.popitem() print('dic1 = ',dic1) # dic1 = {'Author': 'Python', 'age': [18, 99]}
setdefault() 和 get() 類似, 但如果鍵不存在於字典中,將會新增鍵並將值設為default:
list1 = ['Author', 'age', 'sex'] list2 = ['Python', [18,99], '男'] dic1 = dict(zip(list1, list2)) dic1.setdefault('Author', '') print('dic1 = ',dic1) # dic1 = {'Author': 'Python', 'age': [18, 99], 'sex': '男'} dic1.setdefault('name', '') print('dic1 = ',dic1) # dic1 = {'Author': 'Python', 'age': [18, 99], 'sex': '男', 'name': ''}
update() 字典更新,將字典dict1的鍵-值對更新到dict裡,如果被更新的字典中己包含對應的鍵-值對,那麼原鍵-值對會被覆蓋,如果被更新的字典中不包含對應的鍵-值對,則新增該鍵-值對:
list1 = ['Author', 'age', 'sex'] list2 = ['Python', [18,99], '男'] dic1 = dict(zip(list1, list2)) print('dic1 = ',dic1) # dic1 = {'Author': 'Python', 'age': [18, 99], 'sex': '男'} list3 = ['Author', 'phone' ] list4 = ['', 12345678] dic2 = dict(zip(list3, list4)) print('dic2 = ',dic2) # dic2 = {'Author': '', 'phone': 12345678} dic1.update(dic2) print('dic1 = ',dic1) # dic1 = {'Author': '', 'age': [18, 99], 'sex': '男', 'phone': 12345678}
values() 返回一個字典所有的值:
list1 = ['Author', 'age', 'sex'] list2 = ['Python', [18,99], '男'] dic1 = dict(zip(list1, list2)) values = dic1.values() print('values = ', values) print(type(values)) print('values = ', list(values)) # values = dict_values(['Python', [18, 99], '男']) ## values = ['Python', [18, 99], '男']
到此這篇關於Python 十個字典用法使用技巧歸納的文章就介紹到這了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2854809/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python中使用字典的幾個小技巧Python
- python技巧 使用值來排序一個字典Python排序
- python技巧 合併兩個字典Python
- Python字典dict用法Python
- Python字典的高階用法Python
- 老Python總結的字典相關知識Python
- Python numpy中矩陣的用法總結Python矩陣
- python 協程用法總結(一)Python
- Vue的使用總結和技巧Vue
- Python:字典的使用Python
- python 字典和列表巢狀用法Python巢狀
- 【個人總結】常用技巧
- 使用 Python Pip 的 10 個技巧Python
- 總結:11個Python3字典內建方法大全及示例Python
- Python基礎總結之第十天開始【認識一下python的另一個資料物件-----字典】(新手可相互督促)Python物件
- python3 字典的使用Python
- 繼續總結Python中那些簡單好用的用法Python
- git在工作中的用法總結-使用篇Git
- layui用法總結UI
- axios用法總結iOS
- less用法總結
- pandas用法總結
- Const 用法總結
- Promise用法總結Promise
- Pytorch Optimizer類使用小技巧總結PyTorch
- python字典合併的使用注意Python
- Python資料結構:字典Python資料結構
- java中的HashMap用法總結JavaHashMap
- jq命令用法總結
- Quartz:基本用法總結quartz
- STL:vector用法總結
- STL:list用法總結
- STL:set用法總結
- STL:map用法總結
- xPath 用法總結整理
- gulp技巧總結
- python中if語句的用法及if-else結構的使用Python
- python yield和yield from用法總結 木槿惜年2013Python