字典
映射,{}键值对,key 唯一的 ,可哈希,容器型数据类型
可变的(不可哈希): 字典 列表 集合 都不可做键
不可变的(可哈希): 数字 字符串 bool 元组 frozeset() 可以做键
#__author : 'liuyang' #date : 2019/3/6 0006 dic= { 'name':'alex', 'age':18, 'name':'python' } print(dic) # 数据关联性 dic = { 'name_list':['博哥','菊哥','b哥'], 'barry':{ 'name':'太白金星', 'age':18, 'hobby':'wife', } } print(dic)
增删改查
一.增
dic[key] = '****' 有则改值 无则添加
dic.setdefault('name','liusi') ---(‘键’,‘值’) 有则不变 无则添加
# 增 dic= { 'name':'alex', 'age':18, 'name':'python' } print(dic) # 键值对 是唯一的,默认第一个吗 第二个! dic['name'] = 'liuer' print(dic) # 有则改值 无则添加 dic['nama'] = 'liusan' print(dic) # 有则不变 无则添加 dic.setdefault('name','liusi') print(dic) dic.setdefault('nam','liuwu') print(dic)
dic = {1:2 , 3:6} # 若7 = None
print(dic.setdefault(1))#2 #第一步先根据 键 查值
# 第二部 有则不变 无则添加
print(dic.setdefault(1,5)) # 返回 5
二.删:
pop() 删除键值对 (返回值)
popitem 返回值是元组,元组里是key和values
clear() 清空
del 按照键
删字典
除了del 都是 字典.方法(key) dic....(key)
# 删 dic= { 'name':'alex', 'age':18, 'name':'python' } d = dic.pop('name') print(d) print(dic) # 删没有的会报错 但是可以设置信息 # d = dic.pop('naaa') d = dic.pop('naaa','没有元素') print(d) d = dic.pop('naaa',None) print(dic) print(d) dic.clear() print(dic) dic= { 'name':'alex', 'age':18, } # 删除最后一个 从3.6 开始 这个也有返回值得 pop() a = dic.popitem() print(dic) print(a) del dic['name'] print(dic) # 没有元素回报错 而且没办法 用pop 第二个提示值 # del dic['nam'] # print(dic) # del dic # print(dic) # 错误 没有字典里了
三.改:
dic[key]= '******'
dic.update = #不等于 update(name,'sss') #不对
#正确书写 dic.update(name='liuer' , age = 15) 有则改之,无则添之
dic,updat(dic1) # 换成字符串的形式 ,所以可以
# 改 dic= { 'name':'alex', 'age':18, } dic['name'] = 'liuer' print(dic) dic['name'] = ['liuer' , 'liusan '] print(dic) # 错误 因为 name 和 不是逗号 # dic.update(name,'wanger') # 有也不改 print(dic) dic= { 'name':'alex', 'age':18, } # 正确写法 #没有dic 等于 dic.update() # 有则改之 无责添之 级别高 后者改前面 dic.update(name = 'wanger' , money = 11000) print(dic) dic= { 'name':'alex', 'age':18, } dic1= { 'name':'liuer', 'high':180, 'language':'python' } #不对 这是 update 的作用 记错了 # dic = dic1.update(dic) # 正确书写 dic.update(dic1) print(dic)
四.查:
dic[key] 没有此键,报错
dic.get[key] 有就返回 没有就返回None
for 循环
# 查 print(dic['name']) print(dic.get('name' , None)) ''' dic = { 'name_list': ['博哥', '菊哥', 'b哥', 'alex'], 'barry': { 'name': '太白金星', 'age': 18, 'hobby': 'wife', } }
五.字典的值键三种方法:
1.dic.keys (= dic 使用for 循环的时候)
dic = { 'name': '太白金星', 'age': 18, 'hobby': 'wife', } for i in dic: print(i) # dic.keys() 类似于list的容器类类型 高仿列表 元组 ret = dic.keys() print(ret, type(ret)) for key in ret: print(key) print(ret[0]) # 可以转化成list print(list(ret))
2.dic.values
dic.values() print(dic.values()) # 转化成list print(list(dic.values())) for v in dic.values(): print(v)
3.dic.items
print(dic.items()) print(list(dic.items())) for i in dic.items(): print(i)
面试题:分别赋值
a, b = (1, 2) print(a,b) a, b, c = (1, 2, 3) print(a,b,c) a, b = 100, 1000 a, b = [100, 1000] a, b = {'name':'alex', 'age': 73} print(a,b)
分别赋值——————精确讲解dit.items()的含义
a = 18 b = 32 a, b = b, a print(a,b) print(dic.items()) for k,v in dic.items(): ''' k,v = ('name', '太白金星') k,v = ('age', 18) k,v = ('hobby', 'wife') ''' print('这是键:', k) print('这是值:', v)
d = dic.fromkeys([1,2,3],'值')
print(d) # 不可变 类型 没坑
有可变类型 有坑
d = dic.fromkeys([1,2,3],[])
d[1].append(33)
print()
{1:33 , 2:33 , 3:33}
d = dic.fromkeys([1,2,3],10) print(d) d[1] = 20 print(d)
一个杯子 可以装水 大家都用 -----> 可变 都变 不可变的 别的不变 只改可变的
不可变的又建立了一个 内存地址 a = 10 a = 20 两个地址
字典的嵌套:dic[][]
实例:
# 1,给这个列表['博哥', '菊哥', 'b哥', 'alex'] 追加一个元素 '老男孩'。 # 2,将这个列表['博哥', '菊哥', 'b哥', 'alex']中的alex变成首字母大写。 # 3,将这个键值对 'name': '太白金星' 的 '太白金星' 改成男神。 # 4,给barry对应的小字典增加一个键值对: weight: 160 ''' dic = { 'name_list': ['博哥', '菊哥', 'b哥', 'alex'], 'barry': { 'name': '太白金星', 'age': 18, 'hobby': 'wife', } } dic['name_list'].append('老男孩') #dic['name_list'] += '老男孩' # ['博哥', '菊哥', 'b哥', 'alex', '老', '男', '孩'], 不对 print(dic) # 不会做因为 没有把改了的值 换到以前的位置 dic['name_list'][3] = dic['name_list'][3].capitalize() print(dic) dic['barry']['name'] = '男神' print(dic) # 不对 # dic['barry']['weight',16] # print(dic) # 一般方法 找位置 赋值 增加 或者 更改 一样用 dic['barry']['weight'] = 12 print(dic) # 函数方法 , 使用(object,'') # 这样就添加了 不大懂 dic['barry'].setdefault('weight',16) print(dic)
dic['keys'] 可能列表操作.append()
dic = {}
dic1 = dic.fromkeys(iter, object)
a = d.fromkeys([1,2,3],'str')
# print(id(a[1]),id(a[2]))#内存地址不同 改变一个其它肯定不变
{1: 'str', 2: 'str', 3: 'str'}
lis = ['alex','wusir','太白']
a = d.fromkeys(lis,[])
a['alex'] = 1
{'alex': [], 'wusir': [], '太白': []}
{'alex': 1, 'wusir': [], '太白': []}