Python基础(七)之数值类型字典
1、简介
字典(dict),Dictionary:是一种可变类型,可以存储任意类型的元素,如列表、字符串、元组等。
- 字典是无序的,所以不支持索引和切片。
- 字典以键值对(key:value)方式存在,可以通过键来访问值。
- 字典的键key不可以重复,否则只会保留一个,键key可以是任意的数据类型,但不会出现可变的数据类型,保证key的唯一。值value可以重复。
2、创建
- dict = dict() 创建一个空字典
- dict = {} 创建一个空字典
- dict = {key1: value1, key2: value2, key3: value3} 创建一个非空的字典
# 创建空字典
s_dict_empty = {} # 区分与集合 空集合只能使用set()函数创建
s_dict_empty1 = dict()
# 创建非空字典
s_dict = {1:'hello', 2:'Python'}
3、字典新增
- dict[key] = value 将key-value的键值对添加到字典中
# 创建字典
s_dict = dict()# 给字典添加元素
s_dict['one'] = 'Hello'
print('打印字典s_dict=', s_dict)# 打印字典s_dict= {'one': 'Hello'}
4、删除字典del
- del dict 删除字典
s_dict = {1: 'hello', 2: 'Python', 3: 666}
print('删除前的字典s_dict=', s_dict)
del s_dict[3] # 删除字典中key=3的数据
print('删除后的字典s_dict=', s_dict)'''
删除前的字典s_dict= {1: 'hello', 2: 'Python', 3: 666}
删除后的字典s_dict= {1: 'hello', 2: 'Python'}
'''
5、查找字典元素
- dict[key] = value 通过key可以获取到对应的值
s_dict = {1: 'hello', 2: 'Python', 3: 666}
print('查找key=2的数据:', s_dict[2]) # 查找key=2的数据: Python
6、清空字典 clear
- dict.clear() 清空字典
s_dict = {1: 'hello', 2: 'Python', 3: 666}
print('清空前的字典s_dict=', s_dict)
s_dict.clear()
print('清空后的字典s_dict=', s_dict)'''
清空前的字典s_dict= {1: 'hello', 2: 'Python', 3: 666}
清空后的字典s_dict= {}
'''
7、 获取字典长度len
- len(dict) 获取字典的长度
s_dict = {1: 'hello', 2: 'Python', 3: 666}
print('s_dict的长度为:', len(s_dict)) # s_dict的长度为: 3
8、获取字典的所有键key
- dict.kyes() 获取字典中的所有键
# s_dict.keys() 获取字典的所有key
s_dict = {1: 'hello', 2: 'Python', 3: 666}
print('s_dict的所有key为:', s_dict.keys()) # s_dict的所有key为: dict_keys([1, 2, 3])s_dict_keys = s_dict.keys()
print('获取字典所有key的s_dict_keys的类型为:', type(s_dict_keys)) # 获取字典所有key的s_dict_keys的类型为: <class 'dict_keys'>s_list = list(s_dict_keys)print('s_list= ', s_list) # s_list= [1, 2, 3]
# 打印s_dict字典的所有键值对,并且将key=2的value修改为'修改一下Python'
for el in s_list:print('key=', el, ',value=', s_dict[el])if el == 2:s_dict[el] = '修改一下Python'print('修改字典后的字典为:')for el in s_list:print('key=', el, ',value=', s_dict[el])'''
key= 1 ,value= hello
key= 2 ,value= Python
key= 3 ,value= 666
修改字典后的字典为:
key= 1 ,value= hello
key= 2 ,value= 修改一下Python
key= 3 ,value= 666
'''
9、获取字典的所有值value
- dict.values() 获取字典中的所有值
s_dict = {1: 'hello', 2: 'Python', 3: 666}
s_dict_values = s_dict.values()
print('s_dict字典中的所有值:', s_dict_values) # s_dict字典中的所有值: dict_values(['hello', 'Python', 666])
print('s_dict_values的类型为:', type(s_dict_values)) # s_dict_values的类型为: <class 'dict_values'>
10、获取字典中所有的键值对
- dict.items() 获取字典中的所有键值对
s_dict = {1: 'hello', 2: 'Python', 3: 666}
print('获取字典s_dict的所有键值对:', s_dict.items())
# 获取字典s_dict的所有键值对: dict_items([(1, 'hello'), (2, 'Python'), (3, 666)])for el in s_dict.items():print(type(el)) # <class 'tuple'># 将每个键值对的元组取出来for tupl in el:print(tupl)'''
<class 'tuple'>
1
hello
<class 'tuple'>
2
Python
<class 'tuple'>
3
666
'''
11、判断字典中是否包含元素
- 使用in 或者 not in 判断元素是否在字典中, 但只能判断键key是否包含,不能判断值value是否在字典中存在
s_dict = {1: 'hello', 2: 'Python', 3: 666}print('判断s_dict中是否包含hello : ','hello' in s_dict) # False
print('判断s_dict中是否包含2 : ',2 in s_dict) # True
12、字典函数setdefault()
- 若key存在,则返回对应的value,不会将新设置的value返回
- 若key不存在,且字典中没有对应的value,则返回None,并且将新设置的value存到字典中key对应的value
- 若key不存在,但新设置了value,则会返回新设置的value,并且将key-value存到字典中
s_dict = {1: 'hello', 2: 'Python', 3: 666}print('存在key和value时:', s_dict.setdefault(2))
print(s_dict)
print('存在key和value,并且设置了新的value时:', s_dict.setdefault(2,'newValue'))
print(s_dict)
print('存在key,但不存在value时:', s_dict.setdefault(4))
print(s_dict)
print('存在key,但不存在value,且设置了新的value时:', s_dict.setdefault(4,'newValue4'))
print(s_dict)s_dict_empty = {}
print('不存在key,也不存在value时:', s_dict_empty.setdefault(5))
print(s_dict_empty)
print('不存在key,也不存在value,但设置了新的value时:', s_dict_empty.setdefault(5, 'newValue5'))
print(s_dict_empty)
13、字典函数get()
- 若key存在,则返回对应的value,不会将新设置的value返回
- 若key不存在,且字典中没有对应的value,则返回None,并且新设置的value不存到字典中key对应的value
- 若key不存在,但新设置了value,则会返回新设置的value,并且key-value不会存到字典中
s_dict = {1: 'hello', 2: 'Python', 3: 666}print('存在key和value时:', s_dict.get(2))
print(s_dict)
print('存在key和value,并且设置了新的value时:', s_dict.get(2,'newValue'))
print(s_dict)
print('存在key,但不存在value时:', s_dict.get(4))
print(s_dict)
print('存在key,但不存在value,且设置了新的value时:', s_dict.get(4,'newValue4'))
print(s_dict)s_dict_empty = {}
print('不存在key,也不存在value时:', s_dict_empty.get(5))
print(s_dict_empty)
print('不存在key,也不存在value,但设置了新的value时:', s_dict_empty.get(5, 'newValue5'))
print(s_dict_empty)