18/12/25
第三章? 結(jié)構(gòu)化數(shù)據(jù)
列表會維持對象插入時的順序,python中的字典輸入和輸出順序有可能不一樣,也就是說并不會想列表一樣維持對象插入時的順序,但是字典中的數(shù)據(jù)行也并不是按某種特定的順序,字典是無序的。
字典:是一個有兩列任意多行的表。
中括號記法:列表使用數(shù)值索引值來訪問數(shù)據(jù),字典使用鍵來訪問其關(guān)聯(lián)的數(shù)據(jù)值。
例如:person3[‘Name’]
輸出:’NameFord’
因而,當通過鍵來訪問其關(guān)聯(lián)的數(shù)據(jù)值,字典有無序就顯得并不重要。
擴展字典:給字典中增加新的數(shù)據(jù)行,可以使用中括號記法:
person3[‘a(chǎn)ge’]=33
使用字典完成頻度計數(shù):
found = {}??? 大括號本身表示初始為空的字典
found[‘a(chǎn)’]=0? 用來初始化一個字典數(shù)據(jù)值,字典的鍵必須初始化
對字典中某個數(shù)據(jù)值的頻度進行遞增操作符:+=,-+
found[‘e’] = found[‘e’]+1
found[‘e’]+=1
用for迭代處理一個字典時,解釋器只處理字典的鍵。要訪問關(guān)聯(lián)的數(shù)據(jù)值,需要把各個鍵放在中括號里,結(jié)合使用自點名來訪問與這個鍵關(guān)聯(lián)的值。
for k in found:
?????? print(k,’wasfound’,found[k],’times’)
sorted()函數(shù)可以使得字典按順序輸出
sourted(found)
items()
if … not in….:
if ‘pears’ not in fruits:
fruits[‘pears’]=0
fruits[‘pears’]+=1
fruitst
setdefault()
fruits.setdefault(‘pears’,0)
問題:字典可以快速完成查找是因為:使用了高度優(yōu)化的散列算法???什么是散列算法?
18/12/26
集合:
集合的特性:不允許有重復(fù)值。{?? }
集合和列表的對比:如果主要操作是查找,集合要比列表快的多。列表總是完成速度很慢的順序搜索。
集合和字典的賦值區(qū)別:集合:{,??? ,????,???? ,}
????????????????????????????????????????????????字典:{:?? ,????:?????? ,??? :?????,}
18/12/30
set()函數(shù)---向一個變量賦一個新的集合對象
集合方法:
并集:union()函數(shù)---將一個集合與另一個集合合并,由兩個集合中所有唯一的對象組成。
差集:difference()函數(shù)
例如:d=vowels.difference(set(word))----包含在vowels中但不在set(word)中的對象。
交集:intersection()函數(shù)---兩個集合中的共同對象。