字典是一个 可变数据类型 可以进行增删改,使用键值对来表达,中间用冒号: 分开key:value ,每个键值对中间用逗号, 分隔,整个字典使用{} 括起来,格式d = {'key1' : 'value1',' key2' : 'value2' } 字典是无序的,键具有唯一性,当有多个重复的键的时候,则更新,键不可以为空;
字典中键必须是不可变数据类型(如:数字,字符串或元组),值可以是任意数据类型

访问Dict中的值

在字典中,我们可以根据字典中的键来访问其相对应的值

dict1 = {'a': 'apple', 'b': 'blue', 'a': 'act'}
print(dict1)  # 打印结果:{'a': 'act', 'b': 'blue'}  当出现重复的键,更新
print(dict1['a'])  # act 访问字典中的值
print(type(dict1['a']))  # <class 'str'> 打印返回值的数据类型

# 遍历字典中的键值对
dict6 = {'a': 'any', 'b': 'blue', 'c': 'clear', 'd': 'delete'}
for k, v in dict6.items():  # 遍历字典的键值对
    print(k, v)  # 打印结果 :a any b blue c clear d delete 

# 遍历字典的键
for k in dict6.keys():
    print(k)  # 打印结果:a b c d 

# 遍历字典的值
for v in dict6.values():
    print(v)  # 打印结果:any blue clear delete 

# 判断某个对象是否在字典中,根据键判断,而不是值
print('a' in dict6)  # True
print('any' in dict6)  # False

Dict常用的方法

  • 字典的新增和修改语句是一样的,如果有相同的键,更新值,如果没有就直接新增键值对,有两种方法,新增单个可以直接使用 dict["key"] = "value" ,一次性新增多个键值对可以使用dict.update({'key1' : 'value1',' key2' : 'value2'})
  • 删除字典中的 键值对有三种种方法,一种是根据键删除指定的键值对del dict["key"] 这种方法,一种就是清空字典中的键值对,dict.clear() # 清空字典,这种方式内存地址不变 另一种方法就是重新给字典赋一个空值,重新赋值的话内存地址会发生改变;另一种根据键删除并返回其删除的键的值dict.pop("key", "default") 根据键删除键值对,并返回被删除的键的值
  • 计算字典中有几个键值对len(dict)
  • 字典和json文件的格式转化,这里需要引入一个json模块,json转换成字典用json.loads(str) 字典转换成json格式json.dump(dict)

注:在字典中还有其他的函数方法

  • 比较两个字典的元素cmp(dict1, dict2)
  • 字典的浅拷贝dict.copy() # 有返回值
  • 返回并删除字典中最后一对键值对dict.popitem()返回值是一个 元组类型

代码示例:

# 字典的新增与修改 语句是一样的,如果已存在同名的键,则更新键值对,否则新增键值对
dict2 = {'a': 'apple'}
dict2['b'] ='blue'  # 新增  {'a': 'apple', 'b': 'blue'}
dict2['a'] = 'any'  # 更新  {'a': 'any', 'b': 'blue'}
print(dict2)  # 打印字典
print(dict2['a'])  # any  打印键对应的值

# 一次性增加或修改多个键值对 update()
dict2.update({'c': 'clear', 'd': 'delete'})
print(dict2)  # 打印结果{'a': 'any', 'b': 'blue', 'c': 'clear', 'd': 'delete'}

# 字典的键可以存放不可变对象 ,字典的值可以存放任意对象,键不可以为空,字典可以为空
dict3 = {'a': {'a': 'apple'}}
print(dict3)  # {'a': {'a': 'apple'}}

# 删除字典中的键值对
dict4 = {'a': 'any', 'b': 'blue', 'c': 'clear', 'd': 'delete'}
del dict4['c']  # 根据键删除一个键值对
# del dict4['f']  # 字典中不存在该键值对
print(dict4)  # {'a': 'any', 'b': 'blue', 'd': 'delete'}

# 清空字典 1.使用clear---内存地址不变;2.重新赋值{}---内存地址发生变化
dict5 = {'a': 'any', 'b': 'blue', 'c': 'clear', 'd': 'delete'}
print(id(dict5))
# dict5.clear()  # 清空字典,内存地址不变
# print(dict5)

# 重新赋值
dict5 = {}
print(id(dict5))

# dict.pop("key", "default") 根据键删除键值对,并返回被删除的键的值
dict7 = {'a': 'any', 'b': 'blue', 'c': 'clear', 'd': 'delete'}
ele = dict7.pop('a')  # 键在字典中存在返回键对应的值
ele1 = dict7.pop('f', '键不存在')  # 键在字典中不存在,返回设置中指定的默认值
print(ele)  # any
print(ele1)  # 键不存在
print(len(dict7))  # 3 打印字典的键值对个数


# 字典和json转换
import json
str1 = '''{"username":"ka0243", "password":"71285"} '''
str1_new = json.loads(str1)  # 将json转换成字典
print(str1_new['username'])  # ka0243 根据字典得键打印值
str2 = json.dumps(str1_new)  # 将字典转换成json格式
print(str2)  # {"username": "ka0243", "password": "71285"}
print(type(str2))  # <class 'str'>  打印str2类型

# 使用popitem()删除字典的最后一个键值对
dict9 = {'a': 'any', 'b': 'blue', 'c': 'clear', 'd': 'delete'}
ele3 = dict9.popitem()
print(ele3)  # ('d', 'delete')
print(type(ele3))  # <class 'tuple'>