Python小白教学系列 | 字典

字典概述

字典和列表类似,是可变序列,与列表不同的是,字典是无序的可变序列,保存的内容是以 键值对 的形式存放的。类似于的新华字典中拼音和汉字的关系,通过音节表可以快速找到对应的汉字。其中音节表相当于字典里的键(key),其对应的汉字相当于值(value)。键(key)是唯一的,而值(value)可以是多个。

一、字典的主要特征

1、通过键(key)而不是通过索引来读取字典
2、字典是任意对象的无序集合
3、字典可变,可任意镶嵌
4、字典的键必须唯一(如果同一个键出现两次,则后一个键会被记住)
5、字典中的键必须不可变(键可以使用数字,字符串或者元组,但不能使用列表)

二、字典的创建和删除

1、字典的创建

a)语法解释

定义字典时,每个元素都包含两个部分“键(key)“和“值(value)“。
创建字典时,在键(key)和值(value)只见用冒号(:)分隔,相邻两个元素用逗号(,)分隔,所有元素用{}括起来。

b)创建含有元素的字典
示例:

dic = {1: "ssh", 2: "ftp", "key": "value"}	#冒号前的为键,冒号后的为值
print(dic)

运行结果:
{1: 'ssh', 2: 'ftp', 'key': 'value'}

c)创建空字典

建立空字典有两种方法

dic1={}				#方法一
print(dic1)

运行结果:
{}

dic2=dict()			#方法二
print(dic2)

运行结果:
{}

d)通过映射函数创建字典

zip()函数:用于将多个列表或元组对应的位置元素组成为元组,并返回到zip对象
返回值:如果两个列表长度不相等,则与最短的列表长度相同

key = [1, 2, 3, 4]					#作为键的列表
value = ['列表', '元组', '字典']		#作为值的列表
dic = dict(zip(key, value))			#转化为字典
print(dic)							#打印字典

运行结果:
{1: '列表', 2: '元组', 3: '字典'}

e)通过给定的键值对创建字典

dic = dict(a = '列表', b = '元组', c = '字典')
print(dic)

运行结果:
{'a': '列表', 'b': '元组', 'c': '字典'}

2、删除字典

del dic			#dic为字典名

3、清空字典元素

清空后为空字典

dic.clear()			#dic为字典名

二、通过“键值对“访问字典

根据键(key)输出值(value)

dic = {'孙尚香': '大小姐', '孙悟空': '猴子''弼马温', '猪八戒': '二师兄'}
print(dic['孙尚香'])

运行结果:
大小姐

指定的键不存在时:

print(dic['李白'])

运行结果:
Python小白教学系列 | 字典_第1张图片
很难看!

一般在实际开发中,很可能不知道字典里存在什么键,但为了视界效果,更好的用户体验,所以要避免异常产生!

dic = {'孙尚香': '大小姐', '孙悟空': '猴子''弼马温', '猪八戒': '二师兄'}
print("李白的绰号是: ",dic['李白'] if '' in dic else '字典里没有此人!')

运行结果:
李白的绰号是:  字典里没有此人!

另外:Python推荐的方法是使用字典对象的get()方法获取指定键的值。

get()格式:

get(key,'key不存在返回值')

示例:

dic = {'孙尚香': '大小姐', '孙悟空': '猴子'' ''弼马温', '猪八戒': '二师兄'}
print('孙悟空的绰号是: ',dic.get('孙悟空','字典里没有此人!'))

运行结果:
孙悟空的绰号是:  猴子 弼马温

print('李白的绰号是: ',dic.get('李白','字典里没有此人!'))

运行结果:
李白的绰号是:  字典里没有此人!

三、遍历字典

1、使用字典对象的 items() 方法可以获取字典的“键值对”的元组列表。

items()的语法格式:

dic.items()		#dic为字典对象

示例:

dic = {'孙尚香': '大小姐', '孙悟空': '猴子'' ''弼马温', '猪八戒': '二师兄'}
print(dic.items())

运行结果:
dict_items([('孙尚香', '大小姐'), ('孙悟空', '猴子 弼马温'), ('猪八戒', '二师兄')])

2、获取具体的 键值对

dic = {'孙尚香': '大小姐', '孙悟空': '猴子'' ''弼马温', '猪八戒': '二师兄'}
for items in dic.items() :
    print(items)

运行结果:
('孙尚香', '大小姐')
('孙悟空', '猴子 弼马温')
('猪八戒', '二师兄')

3、获取具体的 每个 键 和 值

dic = {'孙尚香': '大小姐', '孙悟空': '猴子'' ''弼马温', '猪八戒': '二师兄'}
for k,v in dic.items() :
    print(k,'的绰号为:',v)

运行结果:
孙尚香 的绰号为: 大小姐
孙悟空 的绰号为: 猴子 弼马温
猪八戒 的绰号为: 二师兄

4、单独获取 键 或 值

dic.keys()		#dic为字典对象
dic.values()

示例:

dic = {'孙尚香': '大小姐', '孙悟空': '猴子'' ''弼马温', '猪八戒': '二师兄'}
print(dic.keys())
print(dic.values())

运行结果:
dict_keys(['孙尚香', '孙悟空', '猪八戒'])
dict_values(['大小姐', '猴子 弼马温', '二师兄'])

四、添加、修改和删除 字典元素

1、添加 字典元素

格式:

dic[key] = value

示例:

dic = {'孙尚香': '大小姐', '孙悟空': '猴子'' ''弼马温', '猪八戒': '二师兄'}
dic['李白']='诗仙'
print(dic)

运行结果:
{'孙尚香': '大小姐', '孙悟空': '猴子 弼马温', '猪八戒': '二师兄', '李白': '诗仙'}

2、修改 字典元素

格式:

#当key包含于字典时,将使用新的值替换原来该键的值
dic[key] = value

示例:

dic = {'孙尚香': '大小姐', '孙悟空': '猴子'' ''弼马温', '猪八戒': '二师兄'}
dic['孙悟空']='大师兄'
print(dic)

运行结果:
{'孙尚香': '大小姐', '孙悟空': '大师兄', '猪八戒': '二师兄'}

3、删除 字典元素

格式:

del dic[key]		#dic为目标字典
dic = {'孙尚香': '大小姐', '孙悟空': '猴子'' ''弼马温', '猪八戒': '二师兄'}
del dic['孙悟空']
print(dic)

运行结果:
{'孙尚香': '大小姐', '猪八戒': '二师兄'}

如果没有要删除的元素,就会报错,很难看!
推荐用以下代码:

dic = {'孙尚香': '大小姐', '孙悟空': '猴子'' ''弼马温', '猪八戒': '二师兄'}
if '李白' in dic :
    del dic['李白']
    print(dic)
else:
    print('没有此人!')

五、字典推导式

利用random标准库随机产生数字,从而快速生成字典

import random		#导入random标准库
dic={i:random.randint(10,100) for i in range(1,5)}
print("生成字典为:",dic)

运行结果:
生成字典为: {1: 78, 2: 62, 3: 54, 4: 76}

你可能感兴趣的:(Python,Python小白教学系列)