python基础知识之字典

字典是用{}来表示的,里面采用key:value的形式存储数据。比如{‘name’:’超人’,’age’:500},要注意key的类型必须是不可变的类型,python对key进行哈希函数运算,根据计算结果决定value的存储地址,所以字典是无序存储的。字典的增删改查如下:

#增 
print('输出结果如下')
dic = {'name':'刘先生','age':'39','job':'工程师','marr':'已婚'}
dic['job'] = 'python全栈工程师'#可以直接通过指定键对应的值的方式来修改
print(dic)
dic['job666'] = '指定的key不存在'#如果指定的key不存在时,则会在末尾增加一对儿键值
print(dic)
#上面的方式一句话概括就是“有就修改,没有就增加”
dic.setdefault('name','超人')#使用setdefault的方法增加时,如果key存在则不错任何改动
print(dic)
dic.setdefault('lover','小姐姐')#如果key不存在,则会在末尾添加新的键值,并且如果不给定value的话默认为None
#上面的方法一句话概括就是“有就不管他,没有就增加”,这在循环中可以利用这一点
print(dic)
输出结果如下
{'name': '刘先生', 'age': '39', 'job': 'python全栈工程师', 'marr': '已婚'}
{'name': '刘先生', 'age': '39', 'job': 'python全栈工程师', 'marr': '已婚', 'job666': '指定的key不存在'}
{'name': '刘先生', 'age': '39', 'job': 'python全栈工程师', 'marr': '已婚', 'job666': '指定的key不存在'}
{'name': '刘先生', 'age': '39', 'job': 'python全栈工程师', 'marr': '已婚', 'job666': '指定的key不存在', 'lover': '小姐姐'}
#删 字典的删除方法 有pop() clear del
dic = {'name': '刘先生', 'age': '39', 'job': 'python全栈工程师', 'marr': '已婚', 'job666': '指定的key不存在', 'lover': '小姐姐'}
res = dic.pop('lover')#删除指定的key对应的value,并且返回删除的value,如果key不存在则会报错。
print('输出结果如下')
print(dic,res)
res2 = dic.pop('小三儿','查无此人')#在删除时可以指定返回值,如果给定的key不存在则会返回给定的返回值.
#上面的方式非常好用,可以防止key不存在时报错,如果存在则删除,不存在则返回指定的字符串
print(dic,res2)
dic.clear()#清空字典
print(dic)
del dic #删除整个字典
#print(dic)
输出结果如下
{'name': '刘先生', 'age': '39', 'job': 'python全栈工程师', 'marr': '已婚', 'job666': '指定的key不存在'} 小姐姐
{'name': '刘先生', 'age': '39', 'job': 'python全栈工程师', 'marr': '已婚', 'job666': '指定的key不存在'} 查无此人
{}
#改
dic = {'name': '刘先生', 'age': '39', 'job': 'python全栈工程师', 'marr': '已婚', 'job666': '指定的key不存在'} 
dic['job666'] = '不存在吗?' #前文已经说过了,直接赋值就可以修改
print('输出结果如下')
print(dic)
输出结果如下
{'name': '刘先生', 'age': '39', 'job': 'python全栈工程师', 'marr': '已婚', 'job666': '不存在吗?'}
#查 直接用索引查询
dic = {'name': '刘先生', 'age': '39', 'job': 'python全栈工程师', 'marr': '已婚', 'job666': '指定的key不存在'} 
dic['name'] #有则返回对应的值,没有则报错
#字典有三个方法:keys(),values(),items(),请看下面三个输出结果:
print(dic.keys())#输出dict_keys(['name', 'age', 'job', 'marr', 'job666'])
print(dic.values())#dict_values(['刘先生', '39', 'python全栈工程师', '已婚', '指定的key不存在'])
print(dic.items())#dict_items([('name', '刘先生'), ('age', '39'), ('job', 'python全栈工程师'), ('marr', '已婚'), ('job666', '指定的key不存在')])
#可以用for循环遍历这三个方法来获取字典中的数据
for k in dic.keys():
    print(k,end=' ')#输出name age job marr job666 
print('\n-----------------------------')
for v in dic.values():
    print(v,end = ' ') #输出刘先生 39 python全栈工程师 已婚 指定的key不存在 
print('\n-----------------------------')
for k,v in dic.items():
    print(k,v,end=' ')#输出name 刘先生 age 39 job python全栈工程师 marr 已婚 job666 指定的key不存在 

字典的其他方法

dic = {'name': [1,2], 'age': '39', 'job': 'python全栈工程师', 'marr': '已婚', 'job666': '指定的key不存在'} 
dic2 = dic.copy()#返回一个字典的浅复制
seq = [12,33,55,'name','age']
dic = dict.fromkeys(seq,'value')#以序列seq中的元素作为字典的键,value为初始值 创建字典
print('输出结果为:')
print(dic)
输出结果为:
{12: 'value', 33: 'value', 55: 'value', 'name': 'value', 'age': 'value'}
dic = {'name': [1,2], 'age': '39', 'job': 'python全栈工程师', 'marr': '已婚', 'job666': '指定的key不存在'} 
res = dic.get('name')#返回指定键对应的值,如果该键不存在则返回默认值None
print(res)
res = dic.get('name8','查无此人')#如果该键不存在则返回给定的值
print(res)
[1, 2]
查无此人
#update()
dic1 = {'name':'张飞','age':77}
dic2 = {'age':88,'job':'将军'}
dic1.update(dic2) #用dic2中的数据更新dic1,如果key相同则修改,不同则添加。
print(dic1)
{'name': '张飞', 'age': 88, 'job': '将军'}

猜你喜欢

转载自blog.csdn.net/Grim777/article/details/81481706