18/12/25
第三章? 結構化數(shù)據(jù)
列表會維持對象插入時的順序惯驼,python中的字典輸入和輸出順序有可能不一樣蹲嚣,也就是說并不會想列表一樣維持對象插入時的順序,但是字典中的數(shù)據(jù)行也并不是按某種特定的順序祟牲,字典是無序的隙畜。
字典:是一個有兩列任意多行的表。
中括號記法:列表使用數(shù)值索引值來訪問數(shù)據(jù)说贝,字典使用鍵來訪問其關聯(lián)的數(shù)據(jù)值议惰。
例如:person3[‘Name’]
輸出:’NameFord’
因而,當通過鍵來訪問其關聯(lián)的數(shù)據(jù)值乡恕,字典有無序就顯得并不重要言询。
擴展字典:給字典中增加新的數(shù)據(jù)行,可以使用中括號記法:
person3[‘age’]=33
使用字典完成頻度計數(shù):
found = {}??? 大括號本身表示初始為空的字典
found[‘a’]=0? 用來初始化一個字典數(shù)據(jù)值傲宜,字典的鍵必須初始化
對字典中某個數(shù)據(jù)值的頻度進行遞增操作符:+=运杭,-+
found[‘e’] = found[‘e’]+1
found[‘e’]+=1
用for迭代處理一個字典時,解釋器只處理字典的鍵函卒。要訪問關聯(lián)的數(shù)據(jù)值县习,需要把各個鍵放在中括號里,結合使用自點名來訪問與這個鍵關聯(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
集合:
集合的特性:不允許有重復值来候。{?? }
集合和列表的對比:如果主要操作是查找,集合要比列表快的多逸雹。列表總是完成速度很慢的順序搜索营搅。
集合和字典的賦值區(qū)別:集合:{,??? ,????,???? ,}
????????????????????????????????????????????????字典:{:?? ,????:?????? ,??? :?????,}
18/12/30
set()函數(shù)---向一個變量賦一個新的集合對象
集合方法:
并集:union()函數(shù)---將一個集合與另一個集合合并,由兩個集合中所有唯一的對象組成梆砸。
差集:difference()函數(shù)
例如:d=vowels.difference(set(word))----包含在vowels中但不在set(word)中的對象转质。
交集:intersection()函數(shù)---兩個集合中的共同對象。