字典 dict
1、创建方法
(1)字典语法1:
d = {key:value,key:value,key:value}
字典的值(value)可以是任意对象,字典的键(key)可以是任意的不可变对象(int\str\bool\tuple)
字典的键(key)不可重复
d_1 = {'name':'曹操','age':'50','gender':'男'}
print(d_1)
# 根据键来获取值
print(d_1['name'])
print(d_1['age'])
print("="*50)
==================================================
{'name': '曹操', 'age': '50', 'gender': '男'}
曹操
50
==================================================
(2)字典语法2:
使用dict()函数:
方法【1】
d_2 = dict(name='刘备',age=50,gender='男')
print(d_2)
# 根据键来获取值
print(d_2['name'])
print(d_2['age'])
print("="*50)
==================================================
{'name': '刘备', 'age': 50, 'gender': '男'}
刘备
50
==================================================
方法【2】
d_3 = dict([('name','孙权'),('age',18),('gender','男')])
print(d_3)
# 根据键来获取值
print(d_3['name'])
print(d_3['age'])
print("="*50)
==================================================
{'name': '孙权', 'age': 18, 'gender': '男'}
孙权
18
==================================================
2、获取字典中的值
get(key[,default])
根据键来获取字典中的值,若获取的键在字典中不存在,会返回None
print(d_3)
print(d_3.get('name'))
print(d_3.get('country'))
print(d_3.get('country','默认值'))# 获取不到时,返回特定的值
print("="*50)
==================================================
{'name': '孙权', 'age': 18, 'gender': '男'}
孙权
None
默认值
==================================================
3、 len()
len()获取字典中键值对的个数
print(d_3)
print(len(d_3))
print("="*50)
==================================================
{'name': '孙权', 'age': 18, 'gender': '男'}
3
==================================================
4、in 和 not in
in ,检查字典中是否包含指定的键,
not in ,检查字典中是否不包含指定的键
print(d_3)
print('name' in d_3)
print('country' in d_3)
print("="*50)
==================================================
{'name': '孙权', 'age': 18, 'gender': '男'}
True
False
==================================================
5、修改字典
(1) d[key] = value
如果key存在则覆盖,不存在则添加
print(d_3)
d_3['name'] = '孙策'
print(d_3)
d_3['country'] = '吴国' # 不存在,则添加
print(d_3)
print("="*50)
==================================================
{'name': '孙权', 'age': 18, 'gender': '男'}
{'name': '孙策', 'age': 18, 'gender': '男'}
{'name': '孙策', 'age': 18, 'gender': '男', 'country': '吴国'}
==================================================
(2)setdefault(key[,default])
如果key已经存在于字典中,则返回key的值,不对字典进行操作
如果key不存在,则向字典中添加这个key,并设置value
print(d_2)
result = d_2.setdefault('name','诸葛亮')
print(result)
result = d_2.setdefault('country','蜀国')
print(result)
print(d_2)
print("="*50)
==================================================
{'name': '刘备', 'age': 50, 'gender': '男'}
刘备
蜀国
{'name': '刘备', 'age': 50, 'gender': '男', 'country': '蜀国'}
==================================================
(3)update([other])
将其他字典中的key-value添加到当前字典中
如果有重复的key,则后边的会替换到当前的
print('d_1=',d_1)
d_4 = dict(name='曹操',country='魏国',job='丞相')
print('d_4=',d_4)
result =d_1.update(d_4) # 返回值是 none
print(result)
print('d_1_uptate=',d_1)
print("="*50)
==================================================
d_1= {'name': '曹操', 'age': '50', 'gender': '男'}
d_4= {'name': '曹操', 'country': '魏国', 'job': '丞相'}
None
d_1_uptate= {'name': '曹操', 'age': '50', 'gender': '男', 'country': '魏国', 'job': '丞相'}
==================================================
6、删除操作
(1)del,删除字典中的key-val
print(d_1)
del d_1['job']
print(d_1)
print("="*50)
==================================================
{'name': '曹操', 'age': '50', 'gender': '男', 'country': '魏国', 'job': '丞相'}
{'name': '曹操', 'age': '50', 'gender': '男', 'country': '魏国'}
==================================================
(2) pop(key[,default])
# 根据key删除字典中的key-value,并返回被删除的value
# 若删除不存在的key,会报错;如果指定了默认值,再删除不存在的key,则会返回默认值
print(d_1)
result = d_1.pop('country')
print(result)
print(d_1)
result = d_1.pop('job','key不存在')
print(result)
print(d_1)
print("="*50)
==================================================
{'name': '曹操', 'age': '50', 'gender': '男', 'country': '魏国'}
魏国
{'name': '曹操', 'age': '50', 'gender': '男'}
key不存在
{'name': '曹操', 'age': '50', 'gender': '男'}
==================================================
(3) claer() 清空字典
print(d_1)
d_1.clear()
print(d_1)
print("="*50)
==================================================
{'name': '曹操', 'age': '50', 'gender': '男'}
{}
==================================================
7、 复制操作
# copy(),用于对字典进行浅复制,复制后的对象和原对象是独立的,修改一个不会影响另一个
# 注意,浅复制会简单复制对象内部的值,如果值也是一个可变对象,则这个可变对象不会被复制
d_5 = d_2 #指向同一对象
d_6 = d_2.copy() #新建一个对象
print('d_2=',d_2,id(d_2))
print("d_5=",d_5,id(d_5))
print('d_6=',d_6,id(d_6))
print("="*50)
==================================================
d_2= {'name': '刘备', 'age': 50, 'gender': '男', 'country': '蜀国'} 1783221749944
d_5= {'name': '刘备', 'age': 50, 'gender': '男', 'country': '蜀国'} 1783221749944
d_6= {'name': '刘备', 'age': 50, 'gender': '男', 'country': '蜀国'} 1783191858488
==================================================
8、 遍历字典
(1)keys()
该方法会返回字典的所有的key,为一个序列,序列中保存有字典的所有的键(key)
print(d_2)
print(d_2.keys()) # 获取所有键
for k in d_2.keys(): # 遍历key()获取所有键
print(k,d_2[k])
print("="*50)
==================================================
{'name': '刘备', 'age': 50, 'gender': '男', 'country': '蜀国'}
dict_keys(['name', 'age', 'gender', 'country'])
name 刘备
age 50
gender 男
country 蜀国
==================================================
(2)values()
该方法会返回一个序列,序列中保存有字典的所有的值
for v in d_2.values():
print(v)
print("="*50)
==================================================
刘备
50
男
蜀国
==================================================
(3)items()
# 该方法返回字典中所有的项
# 它会返回一个序列,序列包含有双值子序列,双值是,key,value
print(d_2.items())
for k,v in d_2.items():
print(k,'=',v)
print("="*50)
==================================================
dict_items([('name', '刘备'), ('age', 50), ('gender', '男'), ('country', '蜀国')])
name = 刘备
age = 50
gender = 男
country = 蜀国
==================================================