二、字典的用法
"""字典是是无序de 3.6版本以前,可变的,只能通过键值来访问。
---dictname[key],其中dictname代表字典的名称.
---key代表指定的键。如果指定的键不存在,将报告KeyError的错误。
---dictname.get(key),其中dictname表示字典的名称.
"""
"""删除字典中的键值对del"""
"""
pop() ---删除指定的值
popitem() ----随机删除值
"""
'''
dictname.pop(key)
'''
dict2 = {'年龄':'28','姓名':'赵姬','体重':'120'}
dict2.pop('年龄') #删除指定的年龄键值
print(dict2) ###结果 === {'姓名': '赵姬', '体重': '120'}
'''
dictname.popitem()
'''
dict2 = {'年龄':'28','姓名':'赵姬','体重':'120'}
dict2.popitem() #随机删除的值
print(dict2)
'''
del dictname['key'] -----删除是以键为目的的
'''
data= {'小明':'81','小红':'95','小白':'72','小李':'84',}
del data['小白'] #删除字典data里的某一个键值
data['小张'] = [100] #在data字典里添加一个新的键值对
print(data) #结果==={'小明': '81', '小红': '95', '小李': '84', '小张': [100]}
########################################################################################################################
"""
字典的遍历
"""
dict1 ={'年龄':'30','姓名':'赵姬','体重':'120'}
for i in dict1.items(): #将字典的键和值均打印出来
print(i,end=',') #结果 == ('年龄', '30')('姓名', '赵姬')('体重', '120')
print(' ') ##两个打印结果中间进行换行
for j in dict1.keys(): #将字典里的键打印出来
print(j,end=',') #结果 == 年龄,姓名,体重,
print(' ') ##两个打印结果中间进行换行
for k in dict1.values():
print(k,end=',') ##结果 == 30,赵姬,120,
print(' ') ##两个打印结果中间进行换行
for g in range(dict1): 不支持直接range()后面跟数组类型,range里的参数只支持数字
print(g)
for r in len(dict1): ##不支持直接len函数里面用数组,,len函数只支持长度
print(r) #TypeError: 'int' object is not iterable
for s in range(len(dict1)): ##支持这种循环,先计算len函数的长度,然后通过range函数依次取出数字大小
print(s,end= ' ') ##结果等于 = 0 1 2
########################################################################################################################
'''
获取字典里的键以及值
字典不支持通过索引来获取其中某一个键或者值,需要转化成列表形式方才可以
'''
dict2 ={'年龄':'30','姓名':'赵姬','体重':'120'}
print(dict2.keys()[1]) ##### 报错结果=== TypeError: 'dict_keys' object does not support indexing
print(dict2.keys()['年龄']) #####报错结果 === 'dict_keys' object does not support indexing
'''可以全部获取'''
print(dict2.keys()) ##结果=dict_keys(['年龄', '姓名', '体重'])
print(dict2.values()) ##结果=dict_values(['30', '赵姬', '120'])
print(dict2.items()) ##结果===dict_items([('年龄', '30'), ('姓名', '赵姬'), ('体重', '120')])
"""字典中的键是不可变类型,不能使用list作为键,但是可以使用touble"""
dict((('小白','小红'),('78','89')))
print(dict)
########################################################################################################################
########################------字典的新增
"""---直接通过键值给赋值
dictname[key] = value
"""
dict2 = {'年龄':'28','姓名':'赵姬','体重':'120'}
dict2['身高'] = '180'
print(dict2) ###结果 === {'年龄': '28', '姓名': '赵姬', '体重': '120', '身高': '180'}
########################################################################################################################
#######################---------------Python字典修改键值对
"""
1、直接对键进行重新赋值
Python 字典中键(key)的名字不能被修改,我们只能修改值(value)
"""
dict2 = {'年龄':'28','姓名':'赵姬','体重':'120'}
dict2['姓名'] = '张松'
print(dict2) ###结果 === {'年龄': '28', '姓名': '张松', '体重': '120'}
'''
2、通过updat关键字来赋值
dictname.updata = {'key':'values'}
'''
dict2 = {'年龄':'28','姓名':'赵姬','体重':'120'}
dict2.update({'年龄':'88'})
print(dict2) ###结果 === {'年龄': '35', '姓名': '赵姬', '体重': '120'}
########################################################################################################################
#######################---------------字典中的删除
'''
setdefault() 方法用来返回某个 key 对应的 value,其语法格式如下:
dictname.setdefault(key, defaultvalue)---
dictname 表示字典名称,key 表示键,defaultvalue 表示默认值(可以不写,不写的话是 None)。
'''
a = {'数学': 95, '语文': 89, '英语': 90}
print(a)
key不存在,指定默认值
a.setdefault('物理', 94)
print(a)
key不存在,不指定默认值
a.setdefault('化学')
print(a)
key存在,指定默认值
a.setdefault('数学', 100)
print(a)
########################################################################################################################
#######################---------------判断字典中是否存在指定键值对
"""
1、判断字典中是否存在指定键值对,首先应判断字典中是否有对应的键。判断字典是否包含指定键值对的键,可以使用 in 或 not in 运算符。
2、对于 dict 而言,in 或 not in 运算符都是基于 key 来判断的。
"""
dict2 = {'年龄':'28','姓名':'赵姬','体重':'120'}
print('身高' in dict2) ###结果 === False
print('年龄' not in dict2) ###结果 === False
print('年龄' in dict2) ###结果 === True
"""
copy()/deepcopy()====深拷贝和浅拷贝
newdcit = old.copy()
1、copy() 方法所遵循的拷贝原理,既有深拷贝,也有浅拷贝。拿拷贝字典 a 为例,
2、copy() 方法只会对最表层的键值对进行深拷贝,也就是说,它会再申请一块内存用来存放 {'one': 1, 'two': 2, 'three': []};
3、而对于某些列表类型的值来说,此方法对其做的是浅拷贝,也就是说,b 中的 [1,2,3] 的值不是自己独有,而是和 a 共有
"""
a = {'one': 1, 'two': 2, 'three': [1,2,3]}
b = a.copy()
向 a 中添加新键值对,由于b已经提前将 a 所有键值对都深拷贝过来,因此 a 添加新键值对,不会影响 b。
a['four']=100
print(a)
print(b)
由于 b 和 a 共享[1,2,3](浅拷贝),因此移除 a 中列表中的元素,也会影响 b。
a['three'].remove(1)
print(a)
print(b)

浙公网安备 33010602011771号