本系列定位爲複習筆記,某些內容並未提及。
在此記錄一些典型疑問和我在學習中的問題或經常遺忘的細節,也會添加一些覺得有意思的部分(其實就是隨心所欲 )
內容主要使用代碼進行傳達
字典(哈希表)的創建與索引訪問
字典以"關鍵字"爲索引,關鍵字可以是任意不可變類型,通常用字符串或數值。
字典是 Python 唯一的一個 映射類型,字符串、元組、列表屬於序列類型。
字典的關鍵字不可變,這是由哈希的特質決定的,只有不可修改的變量才能進行哈希 如
>>> hash(2)
2
>>> hash('asdsdqawfa')
4159286438170111909
>>> hash((1,2,3))
2528502973977326415
>>> hash([1,2,3])
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
hash([1,2,3])
TypeError: unhashable type: 'list'
創建
dict1 = {'李寧': '一切皆有可能', '耐克': 'Just do it', '阿迪達斯': 'Impossible is nothing'}
print('耐克的口號是:', dict1['耐克'])
# 耐克的口號是: Just do it
dict函數創建
dict() -> new empty dictionary
dict(mapping) -> new dictionary initialized from a mapping object’s (key, value) pairs
dict(iterable) -> new dictionary initialized as if via:
特別的:
dict4 = dict([('apple', 4139), ('peach', 4127), ('cherry', 4098)])
print(dict4) # {'cherry': 4098, 'apple': 4139, 'peach': 4127}
dict4 = dict((('apple', 4139), ('peach', 4127), ('cherry', 4098)))
print(dict4) # {'peach': 4127, 'cherry': 4098, 'apple': 4139}
字典內置方法:
- dict.fromkeys(seq[, value]) 用於創建一個新字典,以序列 seq 中元素做字典的鍵,value 爲字典所有鍵對應的初始值。
- dict.keys()返回一個可迭代對象,可以使用 list() 來轉換爲列表。
- dict.values()返回一個迭代器,可以使用 list() 來轉換爲列表,列表爲字典中的所有值。
- dict.items()以列表返回可遍歷的(鍵, 值) 元組數組。
- dict.get(key, default=None)返回指定鍵的值,如果值不在字典中返回默認值。
- key in dict in 操作符用於判斷鍵是否存在於字典中,如果鍵在字典 dict 裏返回true,否則返回false。而not in操作符剛好相反,如果鍵在字典 dict 裏返回false,否則返回true。
- dict.clear()用於刪除字典內所有元素。
- dict.copy()返回一個字典的淺複製。
注意直接賦值與copy淺複製的區別:
dict1 = {'user': 'lsgogroup', 'num': [1, 2, 3]}
dict2 = dict1
dict3 = dict1.copy()
print(id(dict1)) # 148635574728
print(id(dict2)) # 148635574728
print(id(dict3)) # 148635574344
- dict.pop(key[,default])刪除字典給定鍵 key 所對應的值,返回值爲被刪除的值。key 值必須給出。 否則,返回default 值。
- del dict[key] 刪除字典給定鍵 key 所對應的值。
- dict.popitem()隨機返回並刪除字典中的一對鍵和值,如果字典已經爲空,卻調用了此方法,就報出KeyError異常。
- dict.setdefault(key, default=None)和get()方法 類似, 如果鍵不存在於字典中,將會添加鍵並將值設爲默認值。
- dict.update(dict2)把字典參數 dict2 的 key/value(鍵/值) 對更新到字典 dict 裏。
集合:
集合元素具有互異性與唯一性,可以用來去掉列表中重複的元素等操作
創建:
直接把一堆元素用花括號括起來{元素1, 元素2, …, 元素n},重複元素在set中會被自動被過濾。
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print(basket) # {'banana', 'apple', 'pear', 'orange'}
- 使用set(value)工廠函數,把列表或元組轉換成集合。
- 可以使用for把集合中的數據一個個讀取出來。
- 可以通過in或not in判斷一個元素是否在集合中已經存在