目錄python
存多個值,但每個值都有一個key與之對應,key對值有描述功能。多用於存的值表示的是不一樣的狀態時,例如存的值有姓名、年齡、身高、體重、愛好等。算法
{}內用逗號隔開多個元素,每一根元素都是以key:value的形式,value能夠是任意數據類型,而key一般應該是字符串類型,可是key必須爲不可變類型。優化
name = {'name1':'lwx','name2':'hanye'} print(name) # {'name1': 'lwx', 'name2': 'hanye'}
name = dict(name1 = 'lwx',name2 = 'hanye') print(f'name:{name}') # name:{'name1': 'lwx', 'name2': 'hanye'}
name = {'name1': 'lwx', 'name2': 'hanye'} print(f"name[name1]: {name['name1']}") #name[name1]: lwx
經常使用操做和內置方法分爲優先掌握(今天必須得記住)、須要掌握(一週內記住)兩個部分code
# dic之按key存取值 name = {'name1':'lwx','name2':'hanye','time':'all'} print(f"name[name1]:{name['name1']}") name['time'] = 'forever' print(name) # name[name1]:lwx # {'name1': 'lwx', 'name2': 'hanye', 'time': 'forever'}
#dic之長度len name = {'name1':'lwx','name2':'hanye','time':'all'} print(f'len(name):{len(name)}') # len(name):3
# dic之成員運算in和not in name = {'name1':'lwx','name2':'hanye','time':'all'} print(f"'name1' in name:{'name1' in name}") print(f"'lwx' in name:{'lwx' in name}") # 'name1' in name:True # 'lwx' in name:False
# dic之刪除del name = {'name1':'lwx','name2':'hanye','time':'all'} del name['time'] print(name) print(name.get('time')) # {'name1': 'lwx', 'name2': 'hanye'} # None 或得不到,返回None
# dic之刪除pop name = {'name1':'lwx','name2':'hanye','time':'all','haha':'lala'} name.pop('time') # 指定元素刪除 print(f"name.pop('haha'):{name.pop('haha')}") #打印刪除的key對應的值 print(f"name.get('time'):{name.get('time')}") # name.pop('haha'):lala # name.get('time'):None
# dic之刪除popitem() # popitem() 方法隨機返回並刪除字典中的一對鍵和值(通常刪除末尾對)。 name = {'name1':'lwx','name2':'hanye','time':'all','haha':'lala'} print(f"name.popitem():{name.popitem()}") # name.popitem():('haha', 'lala')
# dic之鍵keys()、值values()、鍵值對items()的輸出 name = {'name1':'lwx','name2':'hanye','time':'all'} print(f"name.keys:{name.keys()}") print(f"name.values():{name.values()}") print(f"name.items():{name.items()}") # name.keys:dict_keys(['name1', 'name2', 'time']) # name.values():dict_values(['lwx', 'hanye', 'all']) # name.items():dict_items([('name1', 'lwx'), ('name2', 'hanye'), ('time', 'all')])
# dic之循環 # dic是無序的,可是python3採用了底層優化算法,因此看起來是有序的,可是python2中的字典是無序 name = {'name1':'lwx','name2':'hanye','time':'forever'} for k,v in name.items(): print(f'{k: <7} {v}') # name1 lwx # name2 hanye # time forever
# dic之get() name = {'name1':'lwx','name2':'hanye','time':'forever'} print(f"name.get('name1'):{name.get('name1')}") print(f"naem.get('hiahiahia'):{name.get('hiahiahia')}") # name.get('name1'):lwx # naem.get('hiahiahia'):None
# dic之update() name = {'name1':'lwx','name2':'hanye','time':'forever'} name2= {'deep':'in heart'} name.update(name2) print(name) # {'name1': 'lwx', 'name2': 'hanye', 'time': 'forever', 'deep': 'in heart'}
dic = dict.fromkeys(['name','age','sex'],None) print(f'dic:{dic}') # dic:{'name': None, 'age': None, 'sex': None}
# 有指定key不會改變值;無指定key則改變值 dic = {'a': 1, 'b': 2} print(f"dic.setdefault('a'): {dic.setdefault('a',3)}") print(f"dic: {dic}") print(f"dic.setdefault('c'): {dic.setdefault('c',3)}") print(f"dic: {dic}") # dic.setdefault('a'): 1 # dic: {'a': 1, 'b': 2} # dic.setdefault('c'): 3 # dic: {'a': 1, 'b': 2, 'c': 3}
統計s='hello tank tank say hello sb sb'
中每一個單詞的個數字符串
結果如:{'hello': 2, 'tank': 2, 'say': 1, 'sb': 2}
get
s='hello tank tank say hello sb sb' l = s.split() dic ={} for item in l: if item in dic: dic[item]+=1 else: dic[item]=1 print(dic) # {'hello': 2, 'tank': 2, 'say': 1, 'sb': 2}
多個值,值能夠使多個數據類型,key必須是不可變數據類型,一般是不可變數據類型中的字符串it
無序class
dic = {'a': 1, 'b': 2} print(f'first:{id(dic)}') dic['a'] = 3 print(f'second:{id(dic)}') # first:50821088 # second:50821088