目录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