python数据的可变性
通过数据的可变性,可将数据分为可变数据类型和不可变数据类型。
可变数据类型:list,dict (不可哈希)
不可变数据类型:元祖,bool,int,str (可哈希)
python字典详解
字典的键(key),必须是不可变数据数据类型(可哈希),值(value)可以是任意类型。
字典的优点:通过哈希表运用二分法可以进行快速高效的处理。特点:py3.5及其之前的版本字典是无序的。
增加
第一种
dic = {'age': 18, 'name': 'jin', 'sex': 'male'} # dict[key] = value 字典里没有这个键,则随机添加,有的话,原有值被覆盖 dic['hobby'] = 'read' # 添加 dic['name'] = 'zxc' # 覆盖 print(dic)
第二种
dic = {'age': 18, 'name': 'jin', 'sex': 'male'} # dict.setdefault(key, value) 字典里没有此键,则随机添加,有 则不变 dic.setdefault('hobby', 'read') # 添加 dic.setdefault('name', 'zxc') # 不变 print(dic)
删除
第一种
dic = {'age': 18, 'name': 'jin', 'sex': 'male'} # dict.pop(key, 返回值) 有返回值 字典里有此键,则删除,会返回键对应的值 没有,则返回‘返回值’ print(dic.pop('name')) # 输出jin print(dic.pop('name')) # 报错 没有此键的话必须要设返回值 print(dic.pop('hobby', None)) # 输出None
第二种
dic = {'age': 18, 'name': 'jin', 'sex': 'male'} # dict.popitem() 随机删除,有返回值,会以元祖(key, value)的形式返回 print(dic.popitem()) # 输出('sex', 'male')
第三种
dic = {'age': 18, 'name': 'jin', 'sex': 'male'} # dict.clear() 清空字典 有返回值 print(dic.clear()) # None print(dic)
第四种
dic = {'age': 18, 'name': 'jin', 'sex': 'male'} # del dict 删除字典 del dic # del dict[key] key不存在,报错 del dic['name'] # del dic['hobby'] # 报错 print(dic)
修改
第一种
dic = {'age': 18, 'name': 'jin', 'sex': 'male'} # dict[key] = value 通过赋值直接修改 dic['name'] = 'zxc' print(dic)
第二种
dic = {'age': 18, 'name': 'jin', 'sex': 'male'} # dict.update(dict_new) 将新的字典覆盖添加到dict dic_new = {'name': 'zxc', 'hobby': 'read'} dic.update(dic_new) print(dic)
查看
第一种
dic = {'age': 18, 'name': 'jin', 'sex': 'male'} # dict.keys() 查看字典的键 print(dic.keys()) # ['name', 'sex', 'age'] # dict.valus() 查看字典的值 print(dic.values()) # ['jin', 18, 'male'] # dict.items() 查看键值对 print(dic.items()) # [('age', 18), ('sex', 'male'), ('name', 'jin')]
第二种
dic = {'age': 18, 'name': 'jin', 'sex': 'male'} # dict[key] 查key的值 没有key报错 print(dic['name']) # jin # print(dic['hobby']) # 报错
第三种
dic = {'age': 18, 'name': 'jin', 'sex': 'male'} # dict.get(key, 返回值) 查key的值 没有key,输出‘返回值’ print(dic.get('name')) # jin print(dic.get('hobby')) # 没有 默认返回值是None print(dic.get('hobby', '没有此键')) # 没有此键
字典的嵌套
根据嵌套的数据类型进行对应的操作。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# 嵌套字典的操作 dic = { 'name': 'zxc', 'message': { 'age': 24, 'height': 174, 'weight': 140, 'hobby': ['read', 'computer game', 'running'] } } # 嵌套的是字典就按字典的操作方式 # dic['message'].setdefault('nationality', 'China') # dic['message']['weight'] = 150 # print(dic) # 嵌套的是列表就按列表的操作方式 dic['message']['hobby'].insert(1, 'study') dic['message']['hobby'][0] = 'music' print(dic) # 嵌套的是字符串就按字符串的操作方式 print(dic['message']['hobby'][1].upper())