字典(dict)
字典是Python的基本数据之一,为了解决列表索引查找速率慢,数据不清晰,字典就此应运而生,解决索引查找速率慢,数据不清晰(比如,把一个人的详细信息储存到列表中,那么该人的名字,年龄,就要先知道其下标,远不如字典获取key名,获取对应的值快、清晰和简单)。
提示:以下是本篇文章正文内容,下面案例可供参考
一、字典的创建
字典是一个无序、可变、有索引的集合。字典可以存储任意类型的值(键名除外),字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用","分割,整个字典包括在花括号{}中。
1.1 key-value形式
raw_dict = {'apple':'苹果','orange':'桔子'}
print(raw_dict)
1.2 dict()转换
(1)关键字参数
raw_dict = dict(one=1, two=2, three=3)
print(raw_dict)
(2)元组、列表
raw_dict = dict((('one', 1), ('two', 2), ('three', 3)))
print(raw_dict)
raw_dict = dict([('one', 1), ('two', 2), ('three', 3)])
print(raw_dict)
(3)字典(不推荐,建议直接写出字典)
raw_dict = dict({'one': 1, 'two': 2, 'three': 3})
print(raw_dict)
(4)压缩列表:dict(zip(list1,list2))
注意:zip()函数内部的两个列表,元素个数都要相同。 电脑中有一个压缩软件,其压缩包后缀是(*.zip),可联想记忆。
raw_dict = dict(zip(['one', 'two', 'three'], [1, 2, 3]))
print(raw_dict)
1.3 列表的推导式
raw_dict = {k: v for k, v in [('one', 1), ('two', 2), ('three', 3)]}
print(raw_dict)
1.4 fromkeys()方法:
dict.fromkeys(iterable , set_default_value)
(1)注意:fromkeys()方法,对于已经存在的字典不起作用
none_dict = {}
none_dict.fromkeys('one',1)
print(none_dict)
d1 = {'apple':'苹果','orange':'桔子'}
d1.fromkeys('apple','iphone手机')
print(d1)
d1 = {'apple':'苹果','orange':'桔子'}
d1.fromkeys('Banana','香蕉')
print(d1)
(2)用于快速创建字典(value值需要修改)
str_dict = dict.fromkeys('abcd', '未赋值')
print(str_dict)
li_dict = dict.fromkeys([1, 2, 3], '未赋值')
print(li_dict)
t_dict = dict.fromkeys(('a', 'b', 'c'), '未赋值')
print(t_dict)
sets_dict = dict.fromkeys({'name', 'age', 'class'}, '未赋值')
print(sets_dict)
1.5 注意:字典key键为不可变数据类型
"""
不可变(可哈希)的数据类型:int,str,bool,tuple。
可变(不可哈希)的数据类型:list,dict,set。
"""
d1 = {3.2: '数字'}
d2 = {'name': '张三'}
d3 = {True: 1, False: 0}
d4 = {(1, 2, 3):['a','b','c']}
二、添加与修改
方法一:索引,添加与修改
dict_name[key] = new_value
dict1 = {'name':'张三','age':18}
dict1['id'] = 2021001
print(dict1)
dict1['name'] = "李四"
print(dict1)
方法二:setdefault()方法:只添加
dict2 = {}
dict2.setdefault('id','2021')
print(dict2)
dict2.setdefault('id','2020')
print(dict2)
setdefault()有返回值:
info_dict = {'id':20210001,'name':'张三','age':19}
id_value = info_dict.setdefault('id')
print(id_value)
方法三:update()方法,添加与修改
推荐:当添加与修改少量数据时,使用"方法一"的索引赋值就够用了;update()方法比较适合大量添加与修改数据,当然添加与修改小量数据,也可以使用该方法,看个人的倾向。
1.关键字参数
注意:此方法传入update()方法时,关键字参数(即键名),不能带引号;关键字参数(即键名)带引号,就变成表达式,程序会报错。
info_dict = {'name':'张三','age':19}
info_dict.update(tel=10086)
print(info_dict)
info_dict = {'name':'张三','age':19}
info_dict.update(name='李四')
print(info_dict)
2.添加或修改,列表
info_dict = {'name': '张三', 'age': 19}
info_dict.update([('a',1),('b',2)])
print(info_dict)
info_dict = {'name': '张三', 'age': 19}
info_dict.update([('name','老王'),('age',32)])
print(info_dict)
3.添加或修改,字典
info_dict = {'姓名': '小天使', '年龄': 20}
info_dict.update({'身高': '1.75', '体重': 90})
print(info_dict)
info_dict = {'姓名': '小天使', '年龄': 28}
info_dict.update({'姓名':'小恶魔'})
print(info_dict)
三、查询
1.索引取值:即按key键获取value值
info_dict = {'name':'张三','age':19}
print(info_dict['name'])
2.get()方法:获取key键对应的value值
2.1 存在key键时
info_dict = {'name':'张三','age':19}
value = info_dict.get('name')
print('name =',value)
2.2 不存在key键时
info_dict = {'name':'张三','age':19}
value = info_dict.get('a')
print('name =',value)
2.3 设置指定键的值不存在时,返回该默认值
info_dict = {'name':'张三','age':19}
value = info_dict.get('a','找不到该键')
print('name =',value)
3.for循环
3.1 items(),keys(),values()的用法
info_dict = {'name':'张三','age':19,'address':'广州'}
print(info_dict.items())
print(list(info_dict.items()))
print(info_dict.keys())
print(list(info_dict.keys()))
print(info_dict.values())
print(list(info_dict.values()))
3.2 遍历字典
(1)遍历字典所有键值对:items()
info_dict = {
'id':202101,
'name':'张三',
'age':19
}
for item in info_dict.items():
print(item)
"""输出
('id', 202101)
('name', '张三')
('age', 19)
"""
(2)遍历字典所有键名:keys()
info_dict = {
'id':202101,
'name':'张三',
'age':19
}
for key in info_dict.keys():
print(key)
"""输出
id
name
age
"""
(3)遍历字典所有值:values()
info_dict = {
'id':202101,
'name':'张三',
'age':19
}
for value in info_dict.values():
print(value)
"""输出
202101
张三
19
"""
(4)遍历字典的键与值
info_dict = {
'id':202101,
'name':'张三',
'age':19
}
for k,v in info_dict.items():
print(k,v)
"""输出
id 202101
name 张三
age 19
"""
四、字典中的删除操作
1.pop(key):移除指定key键的key-value键值对
infoDict = {
'id': 2021001,
'name': '张三',
'age': 19,
'address': '广东广州',
'tel': 15699998888
}
age = infoDict.pop('age')
print(age)
print(infoDict)
2.popitem():删除最后一个key-value键值对
infoDict = {
'id': 2021001,
'name': '张三',
'age': 19,
'address': '广东广州',
'tel': 15699998888
}
pop_keyValue = infoDict.popitem()
print(pop_keyValue)
print(infoDict)
3.del dict_name[key]:删除指定key键
infoDict = {
'id': 2021001,
'name': '张三',
'age': 19,
'address': '广东广州',
'tel': 15699998888
}
del infoDict['address']
print(infoDict)
4.del dict_name:删除整个字典
infoDict = {
'id': 2021001,
'name': '张三',
'age': 19,
'address': '广东广州',
'tel': 15699998888
}
del infoDict
5.clear():清空字典
infoDict = {
'id': 2021001,
'name': '张三',
'age': 19,
'address': '广东广州',
'tel': 15699998888
}
infoDict.clear()
print(infoDict)
五、嵌套字典
info_dict = {
'姓名': '张三',
'年龄': 20,
'出生地': '广东广州',
'国籍': '中国',
'兴趣': ['打篮球', '踢足球', '打兵乓球'],
'社交': {'qq': 'qq10086', '微信': 'vx10010', '知乎': 'zw10000'},
'读过的书籍': {'语言类': ['汉语言文学', '对外汉语', '中国少数民族语言文学'], '理工类': ['材料化学', '软件工程', '生物科学']},
}
print(info_dict['姓名'])
print(info_dict['兴趣'][1])
print(info_dict['社交']['qq'])
print(info_dict['读过的书籍']['语言类'][0])
print(info_dict['读过的书籍']['理工类'][1])
|