持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第28天
一、字典概念
Python内置的数据结构之一,与列表一样是一个可变序列。字典是可变的
以键值对的方式存储数据,字典是一个无序的序列。(列表是有序的)
字典也称为映射结构)
字典通过计算key的hash值确定存储位置,所以key应为不可变序列(字符串,整数等)。
Python中的字典根据key,通过hash函数,计算出存储位置,找到value。
二、字典的创建
字典的表现形式为一组包含在大括号“{}”中的键值对,每个键值对为一个字典元素,每个元素通过逗号“,”分隔,每对键值通过“:”分隔。
字典中的键必须使用不可变数据类型的对象,如数字、字符串、元组等,键不允许重复。
字典中的值可以是任意类型,在字典中可以重复。
1、使用{}创建字典
dict1={}
dict2= {'张三': 100, '李四': 98, '王五': 45}
print(dict1)
print(dict2)
print(type(dict2))
2、使用dict()函数创建字典
'''第二种创建dict()'''
dict1=dict()
dict2= dict([('name','张三'),('age',18)])
dict3 = dict(name='jack', age=20)
print(dict1)
print(dict2)
print(dict3)
三、字典的访问
没有索引和切片操作。
1、通过字典[键],可以提取相应的值。传入的键要存在于字典中,否则会返回一个错误。
语法格式:字典[键]
scores = {'张三': 100, '李四': 98, '王五': 45}
print(scores['张三'])
# print(scores['陈六']) # KeyError: '陈六'
为了避免出现上述传入键不存在而导致出错的现象,有两种处理方法
①使用in语句测试键是否存在
scores = {'张三': 100, '李四': 98, '王五': 45}
if "张三" in scores:
print(scores['张三'])
②字典方法get()
print(scores.get('张三'))
print(scores.get('陈六')) # None
print(scores.get('赵七', 99))
99是'赵七'所对应的value不存在时,提供的一个默认值 向get()方法传入需要的键和一个代替值,无论键是否存在。若只传入键,当键存在,返回对应的值;当键不存在,会返回None。若传入代替值,当键存在,返回对应的值;当键不存在,会返回代替值。
2、for 循环遍历字典
scores = {'张三': 100, '李四': 98, '王五': 45}
# 字典元素的遍历
for item in scores:
print(item, scores[item], scores.get(item))
3、字典的键、值、键值对
语法格式:
字典.keys() 字典中所有键
字典.values() 字典中所有值
字典.items() 字典中所有的键值对
返回值都是可迭代对象,利用循环可以遍历这些对象。
province = dict(广东='深圳', 辽宁='沈阳', 山东='济南', 新疆='乌鲁木齐')
print(province.keys())
print(province.values())
print(province.items())
print(type(province.keys()))
dict_keys(['广东', '辽宁', '山东', '新疆'])
dict_values(['深圳', '沈阳', '济南', '乌鲁木齐'])
dict_items([('广东', '深圳'), ('辽宁', '沈阳'), ('山东', '济南'), ('新疆', '乌鲁木齐')])
<class 'dict_keys'>
old_dict={'广东': '深圳', '辽宁': '沈阳', '山东': '济南', '新疆': '乌鲁木齐'}
for key in old_dict.keys():
print(key)
广东
辽宁
山东
新疆
old_dict={'广东': '深圳', '辽宁': '沈阳', '山东': '济南', '新疆': '乌鲁木齐'}
for value in old_dict.values():
print(value)
深圳
沈阳
济南
乌鲁木齐
old_dict={'广东': '深圳', '辽宁': '沈阳', '山东': '济南', '新疆': '乌鲁木齐'}
for item in old_dict.items():
print(item)
('广东', '深圳')
('辽宁', '沈阳')
('山东', '济南')
('新疆', '乌鲁木齐')