Python也包含有 集合 類型。集合是由不重複元素組成的無序的集。它的基本用法包括成員檢測和消除重複元素。python集合對象也支持像 聯合,交集,差集,對稱差分等數學運算。
花括號或 set() 函數可以用來創建集合。注意:要創建一個空集合你只能用 set() 而不能用 {},因爲後者是創建一個空字典,這種數據結構我們會在python教程下一節進行討論。
以下是一些簡單的示例:
>>> print(basket) # show that duplicates have been removed
{'orange', 'banana', 'pear', 'apple'}
>>> 'orange' in basket # fast membership testing
True
>>> 'crabgrass' in basket
False
>>> # Demonstrate set operations on unique letters from two words
...
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a # unique letters in a
{'a', 'r', 'b', 'c', 'd'}
>>> a - b # letters in a but not in b
{'r', 'd', 'b'}
>>> a | b # letters in a or b or both
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b # letters in both a and b
{'a', 'c'}
>>> a ^ b # letters in a or b but not both
{'r', 'd', 'b', 'm', 'z', 'l'}
類似於 列表推導式,集合也支持推導式形式
>>> a
{'r', 'd'}
字典
另一個非常有用的 Python 內置數據類型是 字典 (參見 映射類型 --- dict)。字典在其他語言裏可能會被叫做 聯合內存 或 聯合數組。與以連續整數爲索引的序列不同,字典是以 關鍵字 爲索引的,關鍵字可以是任意不可變類型,通常是字符串或數字。如果一個元組只包含字符串、數字或元組,那麼這個元組也可以用作關鍵字。但如果元組直接或間接地包含了可變對象,那麼它就不能用作關鍵字。列表不能用作關鍵字,因爲列表可以通過索引、切片或 append() 和 extend() 之類的方法來改變。
理解字典的最好方式,就是將它看做是一個 鍵: 值 對的集合,鍵必須是唯一的(在一個字典中)。一對花括號可以創建一個空字典:{} 。另一種初始化字典的方式是在一對花括號裏放置一些以逗號分隔的鍵值對,而這也是字典輸出的方式。
字典主要的操作是使用關鍵字存儲和解析值。也可以用 del 來刪除一個鍵值對。如果你使用了一個已經存在的關鍵字來存儲值,那麼之前與這個關鍵字關聯的值就會被遺忘。用一個不存在的鍵來取值則會報錯。
對一個字典執行 list(d) 將返回包含該字典中所有鍵的列表,按插入次序排列 (如需其他排序,則要使用 sorted(d))。要檢查字典中是否存在一個特定鍵,可使用 in 關鍵字。
以下是使用字典的一些簡單示例
>>> tel = {'jack': 4098, 'sape': 4139}
>>> tel['guido'] = 4127
>>> tel
{'jack': 4098, 'sape': 4139, 'guido': 4127}
>>> tel['jack']
4098
>>> del tel['sape']
>>> tel['irv'] = 4127
>>> tel
{'jack': 4098, 'guido': 4127, 'irv': 4127}
>>> list(tel)
['jack', 'guido', 'irv']
>>> sorted(tel)
['guido', 'irv', 'jack']
>>> 'guido' in tel
True
>>> 'jack' not in tel
False
dict() 構造函數可以直接從鍵值對序列裏創建字典。
{'sape': 4139, 'guido': 4127, 'jack': 4098}
此外,字典推導式可以從任意的鍵值表達式中創建字典
{2: 4, 4: 16, 6: 36}
當關鍵字是簡單字符串時,有時直接通過關鍵字參數來指定鍵值對更方便
{'sape': 4139, 'guido': 4127, 'jack': 4098}