字典和列表类似,是可变序列,与列表不同的是,字典是无序的可变序列,保存的内容是以 键值对 的形式存放的。类似于的新华字典中拼音和汉字的关系,通过音节表可以快速找到对应的汉字。其中音节表相当于字典里的键(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['李白'])
一般在实际开发中,很可能不知道字典里存在什么键,但为了视界效果,更好的用户体验,所以要避免异常产生!
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}