一、基本介绍
1、字典(dict)也是一种常用的Python数据类型,其他语言可能把字典称为联合内存或联合数组
2、字典是一种映射类型,非常适合处理通过xx查询yy的需求,这里的xx我们称为Key(键/关键字),这里的yy我们称为Value(值),即Key--Value的映射关系
二、字典的定义
1、字典的定义
创建一个字典,只要把逗号分隔的不同元素,用{ }括起来即可,存储的元素是一个个的键值对
dict_a={key1:value1,key2:value2,key3:value3....}
通过key取出对应的value语法:
字典名[key]
dict_a[key1]
2、字典使用实例
# 定义字典
tel={'jack':4098,'tom':4139} # {'jack': 4098, 'tom': 4139} dict
print(f"dict_tel:{tel} 类型:{type(tel)}")
# 查询jack的tel
print("jack的tel:",tel['jack']) # 4098
三、注意事项和使用细节
1、字典的Key(关键字)通常是字符串或数字,Value可以是任意数据类型
# 定义字典
tel={'jack':4098,'tom':4139} # {'jack': 4098, 'tom': 4139} dict
print(f"dict_tel:{tel} 类型:{type(tel)}")
# 查询jack的tel
print("jack的tel:",tel['jack']) # 4098
# 字典的Key(关键字)通常是字符串或数字,Value可以是任意数据类型
dict_a={
"jack":[100,200,300],
"mary":(10,20,"hello"),
"nono":{"apple","pear"},
"smith":"计算机老师",
"周星驰":{
"性别":"男",
"age":18,
"地址":"香港"
},
"key1":100,
"key2":9.8,
"key3":True
}
print(f"dict_a:{dict_a} 类型:{type(dict_a)}")
2、 字典不支持索引,会报KeyError
# 字典不支持索引,会报KeyError
# print(dict_a[0])
3、既然字典不支持索引,所以对字典进行遍历不支持while,只支持for,注意直接对字典进行遍历,遍历得到的是key
# 既然字典不支持索引,所以对字典进行遍历不支持while,只支持for
dict_b = {'one': 1, 'two': 2, 'three': 3}
# 遍历方式 1-依次取出 key,再通过dict[key]取出对应的value
print("-------遍历方式1-------")
for key in dict_b:
print(f"key:{key} value:{dict_b[key]}")
# 遍历方式 2-依次取出 value
print("-------遍历方式2-------")
for value in dict_b.values():
print(f"value:{value}")
# 遍历方式 3-依次取出 key-value
print("-------遍历方式3-------")
for k,v in dict_b.items():
print(f"key:{k} value:{v}")
4、创建空字典可以通过{ },或者dict()
# 创建空字典可以通过{ },或者dict()
dict_c={}
dict_d=dict()
print(f"dict_c:{dict_c} 类型:{type(dict_c)}") #{} dict
print(f"dict_d:{dict_d} 类型:{type(dict_d)}") #{} dict
5、字典的key必须是唯一的,如果你指定了多个相同的key,后面的键值对会覆盖前面的
# 字典的key必须是唯一的,如果你指定了多个相同的key,后面的键值对会覆盖前面的
dict_e = {'one': 1, 'two': 2, 'three': 3, 'two': 200}
print(f"dict_e:{dict_e}") # {'one': 1, 'two': 200, 'three': 3}
四、字典常用操作
1、字典常用操作
2)常用操作一览
2、演示字典常用操作
1)len(d):返回字典d中的项数
# 定义字典
dict_a={'one': 1, 'two': 2, 'three': 3}
# len(d):返回字典d中的项数
print(f"dict_a 的元素个数:{len(dict_a)}") # 3
2)d[key]:返回d中以key为键的项。如果映射中不存在key,则会引发KeyError
# d[key]:返回d中以key为键的项。如果映射中不存在key,则会引发KeyError
print("key为three对应的value:",dict_a['three']) # 3
3)d[key]=value:将d[key]设为value,如果key已经存在,则是修改value,如果key不存在,则是增加key-value,注意会直接修改原来的字典
# d[key]=value:将d[key]设为value,如果key已经存在,则是修改value,
# 如果key不存在,则是增加key-value,注意会直接修改原来的字典
# 修改 需求:修改 key='one'对应的value为'第一'
dict_a['one']='第一'
print(f"dict_a:{dict_a}") # {'one': '第一', 'two': 2, 'three': 3}
# 添加 需求:增加key为'four',value为4
dict_a['four']=4
print(f"dict_a:{dict_a}") # {'one': '第一', 'two': 2, 'three': 3, 'four': 4}
4)del d[key]:将d[key]从d中移除。如果映射中不存在key,则会引发KeyError
# del d[key]:将d[key]从d中移除。如果映射中不存在key,则会引发KeyError
# 需求:删除 key为'four'的元素
del dict_a["four"]
print(f"dict_a:{dict_a}") # {'one': '第一', 'two': 2, 'three': 3}
5)pop(key,[default]:如果key存在于字典中,则将其移除并返回其值,否则返回default。如果default未给出且key不存在于字典中,则会引发KeyError
# pop(key,[default]:如果key存在于字典中,则将其移除并返回其值,否则返回default。
# 如果default未给出且key不存在于字典中,则会引发KeyError
# 需求:将key为'one'的值返回,并将该元素从字典中移除
val=dict_a.pop('one')
print(f"val:{val}") # 第一
print(f"dict_a:{dict_a}") # {'two': 2, 'three': 3}
6)keys():返回字典中所有的key
# keys():返回字典中所有的key
dict_a_keys=dict_a.keys()
print(f"dict_a_keys:{dict_a_keys}") # dict_keys(['two', 'three'])
print(f"类型是:{type(dict_a_keys)}") # <class 'dict_keys'>
for k in dict_a_keys:
print("k->",k)
# k-> two k-> three
7)key in d:如果d中存在键key,则返回True,否则返回False
# key in d:如果d中存在键key,则返回True,否则返回False
# 需求:判断字典中是否有 key='two'
print("two" in dict_a) # True
8)clear():移除字典中的所有元素
# clear():移除字典中的所有元素
# 需求:将字典清空
dict_a.clear()
print(f"dict_a:{dict_a}") # {}