#字典{'key':'value', 'key1':'value} ''' 数据类型分类: 可变(不可哈希):list dict set 不可变(可哈希):str int tuple bool 容器类:list dic tuple 非容器类: str int bool 字典的key必须是不可变类型,是唯一的; value可以是任意类型 字典查询速度快,存储大量关系型数据 python3.5之前是无序的,3.6之后是有序的 ''' dic = { '性别':'男', '爱好':'女' } #增,key存在则更新,不存在则新增 dic['test1'] = True print(dic) dic['test1'] = False print(dic) #增,dict.setdefault(key, value),省略value则存None dic.setdefault('test2') print(dic) #key存在则忽略,不存在则新增 dic.setdefault('test2', 'haha') dic.setdefault('test3', 'haha') print(dic) #删,pop(key) 与列表相同,有返回值,返回key对应的value print(dic.pop('test3')) print(dic) #pop()如key不存在会报错,需传默认值 print(dic.pop('test4', 'key不存在')) #随机删除(按字典顺序,3.5之前无需……)返回值为元组,里面是删除的键值对 print(dic.popitem()) print(dic) #按键值删除 del dic['test'] print(dic) #清空字典 dic.clear() print(dic) #删除字典 del dic #print(dic) #改,第一种按前面增的方式直接访问key改 #第二种 dict.update(dict1),将dict1中所有键值对覆盖添加到dict中,dict1不变 msg = {'name': 'Jerry', 'age': 18} dic1 = {'name': 'Tony', 'weight': 100} msg.update(dic1) print('msg:', msg,'dic1:', dic1) #查 print(msg['name']#key不存在会报错 print(msg.get('name1'))#key不存在返回None print(msg.get('name1'), '不存在')#key不存在可指定默认返回 for循环查询 #dict.keys(),特殊数据类型,返回字典的key print(type(msg.keys()), msg.keys()) for key in msg.keys(): print(key) #可转换成列表 L_keys = list(msg.keys()) print('L_keys', L_keys) #dict.values(),同keys,dict_values类型 print(type(msg.values())) #dict.items(),dict_items类型,返回键值对列表,每一对是一个元组 print(type(msg.items())) print(msg.items()) #分别赋值,必须一一对应 a, b = 1, 2 c, d = (1, 2) print(a, b, c, d) #单个参数是元组 for i in msg.items(): print(i) #两个参数分别赋值 for k, v in msg.items(): print(k, v) #字典嵌套 dicts = { 'name_list': ['Jerry', 'Tony'], 'status': None, 'msg': { 'age': 18, '爱好': ['女'] } } #增加键值对 #dicts['学校'] = '野鸡大学' dicts.setdefault('学校', '野鸡大学') print(dicts) #修改 #dicts['status'] = True dicts.update({'status': True}) print(dicts) #嵌套增加 dicts['name_list'].append('test') print(dicts) dicts['msg'].setdefault('test2') print(dicts) #改 dicts['msg'].update({'test2': 'haha'}) print(dicts) dicts['msg']['test2'] = '没完了' print(dicts) dicts['msg']['爱好'].append('吃吃喝喝') print(dicts)