字典 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 = 蜀国
==================================================