字典(一)

95 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第28天

一、字典概念

Python内置的数据结构之一,与列表一样是一个可变序列。字典是可变的

以键值对的方式存储数据,字典是一个无序的序列。(列表是有序的)

字典也称为映射结构)

image.png

字典通过计算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)

('广东', '深圳')

('辽宁', '沈阳')

('山东', '济南')

('新疆', '乌鲁木齐')