Ⅰ 如果字典的長度不同,用cmp(dict1,dict2)比較大小時,如果字段dict1比dict2長,cmp()返回正直,如果dict2比dict1長,則返回負值,字典的鍵越多這個字典就越大 Ⅱ 如果兩個字典的長度相同,那就按字典的鍵比較,鍵比較的順序和keys()方法返回鍵的順序相同 Ⅲ 如果兩個字典的長度相同而且他們的鍵也匹配,則用字典中每個相同的鍵所對應的值進行比較,一旦出現不匹配的值,就對這兩個值進行直接比較 Ⅳ 如果字典有相同的長度,相同的鍵,每個鍵也對應相同的值,則字典完全匹配,返回0值
>>> dict([['x',1],['y',2]]){'x': 1, 'y': 2}>>> dict([('xy'[i-1],1) for i in range(1,3)]){'x': 1, 'y': 1}>>> dict(x=1,y=2){'x': 1, 'y': 2}>>> dict1=dict(x=1,y=2)>>> dict1{'x': 1, 'y': 2}>>> dict2=dict(**dict1)>>> dict2{'x': 1, 'y': 2}>>> dict3=dict2.copy()>>> dict3{'x': 1, 'y': 2}>>> len(dict3)2>>> dict2.keys()dict_keys(['x', 'y'])>>> dict2.values()dict_values([1, 2])>>> dict2.items()dict_items([('x', 1), ('y', 2)])>>> for key in dict2.keys():... 可用方法| 字典方法 | 含義 | 
|---|---|
| dict.clear() | 刪除字典中所有元素 | 
| dict.copy() | 返回字典的一個副本 | 
| dict.fromkeys(seq,val=None) | 創建并返回一個新字典,以seq中的元素做該字典的鍵,val做該字典中所有鍵對應的初始值(為提供默認為None) | 
| dict.get(key,default=None) | 對字典dict中的鍵key,返回它對于的值value,如果字典中不存在此鍵,則返回default的值(默認為None) | 
| dict.has_key(key) | 如果key在字典中存在,返回True,否則返回False | 
| dict.items() | 返回一個包含字典中鍵,值對元祖列表 | 
| dict.keys() | 返回一個包含字典中鍵的列表 | 
| dict.iter() | 方法iteritems(),iterkeys(),itervalues()與它們對應的非迭代方法一樣,不同的是它們返回一個迭代子,而不是一個列表 | 
| dict.pop(key[,default]) | 和方法get()相似,如果字典中key鍵存在,刪除并返回dict[key],如果key鍵不存在,且沒有給出default的值,引發keyError異常 | 
| dict.setdefault(key,default=None) | 如果字典中不存在key鍵,有dict[key]=default為它賦值 | 
| dict.update(dict2) | 將字典dict2的鍵-值對添加到字典dict | 
| dict.values() | 返回一個包含字典中所有值的列表 | 
集合(set)是一組無須排列的可哈希值,其值可以做字典中的鍵。集合(sets)本身有兩種類型,可變集合(set)和不可變集合(frozenset),創建使用set()或frozenset。集合支持(in, not in,==,!=,>,>=,<,<=,|,&,-,^,|=,&=,-=,^=),加號不是集合類型的運算符,對于混合類型操作,如果左右兩個操作數的類型相同,既都是可變集合或不可變集合,則產生的結果類型是相同的,如果左右兩個操作數不同,則產生的操作類型與做操作數的類型相同。
>>> s=set('sky')>>> s{'k', 's', 'y'}>>> v=frozenset('blue')>>> vfrozenset({'b', 'u', 'e', 'l'})>>> type(s)<class 'set'>>>> type(v)<class 'frozenset'>>>> len(v)4>>> s=set('sskkyy')>>> s{'k', 's', 'y'}>>> len(s)3>>> 'k' in sTrue>>> s.add('E')>>> s{'k', 's', 'y', 'E'}>>> v.add('A')Traceback (most recent call last): File "<stdin>", line 1, in <module>AttributeError: 'frozenset' object has no attribute 'add'>>> s.update('sk')>>> s{'k', 's', 'y', 'E'}>>> s.update('skw')>>> s{'s', 'E', 'w', 'k', 'y'}>>> s.remove('w')>>> s{'s', 'E', 'k', 'y'}>>> s-=set('ky')>>> s{'s', 'E'}>>> del s>>> sTraceback (most recent call last): File "<stdin>", line 1, in <module>NameError: name 's' is not defined| 函數/方法名 | 等價運算符 | 說明 | 
|---|---|---|
| len(s) | 集合s中元素的個數 | |
| set([obj]) | obj必須是支持迭代的,由obj中的元素創建集合,否則創建一個空集合 | |
| forzenset([obj]) | 與set方法相同,返回不可變集合 | |
| s.issubset(t) | s<=t | s中所有的元素都是t的成員 | 
| s.issupperset(t) | s>=t | t中所有的元素都是s的成員 | 
| s.union(t) | s|t | s或t中的元素 | 
| s.intersection(s) | s&t | s和t中的元素 | 
| s.difference(t) | s-t | s中的元素,而不是t中的元素 | 
| s.symmetric_difference(t) | s^t | s或t中的元素,但不是s和t共有的元素 | 
| s.copy() | 返回s的(淺復制)副本 | |
| s.update(t) | s|=t | 將t中的成員添加s | 
| s.intersection_update(t) | s&=t | s中僅包括s和t中共有的成員 | 
| s.difference_update(t) | s-=t | s中包括僅屬于s但不屬于t的成員 | 
| s.symmetric_difference_update(t) | s^=t | s中包括僅屬于s或僅屬于t的成員 | 
| s.add(obj) | 將obj添加到s | |
| s.remove(obj) | 將obj從s中刪除,如果s中不存在obj將引發KeyError | |
| s.discard(obj) | 如果s中存在obj,從s中刪除它,不存在obj不會引發異常 | |
| s.pop() | 移除并返回s中的任意一個元素 | |
| s.clear() | 移除s中的所有元素 | 
新聞熱點
疑難解答