一、前言
本文主要记录了Python学习过程中,基本数据类型字典dict的操作
二、字典dict
主要包括增、删、改、查的一些方法
字典是python中唯一的映射类型数据,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。
字典(dictionary)是除列表之外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
增
直接添加
dic = {
'name': 'allen',
'age': 19,
'hobby': 'basketball'
}
dic['address'] = '北京' # 有key则修改,无key则增加
print(dic)
{'name': 'allen', 'age': 19, 'hobby': 'basketball', 'address': '北京'}
使用set.default()添加元素
dic = {
'name': 'allen',
'age': 19,
'hobby': 'basketball'
}
dic.setdefault('name','alex') #有key不修改,无则增加
{'name': 'allen', 'age': 19, 'hobby': 'basketball'}
dic.setdefault('tel','18888813694') #有key不修改,无则增加
{'name': 'allen', 'age': 19, 'hobby': 'basketball', 'tel': '18888813694'}
删
dic = {
'name': 'allen',
'age': 19,
'hobby': 'basketball'
}
res = dic.pop('name')
print(res)
输出结果
{'age': 19, 'hobby': 'basketball'}
res = dic.pop('address','没有此key') # 没有此key时不报错
print(res)
{'name': 'allen','age': 19, 'hobby': 'basketball'}
dic.popitem() # 随机删除,有返回值
dic.clear() # 清除字典中的元素
del dic # 删除字典
改
dic = {
'name': 'alex',
'age': 19,
'hobby': 'basketball',
}
dic1 = {
'address': 'beijing',
'age': 25,
'tel': '17888813693',
}
dic['age]=20
print(dic)
结果:{
'name': 'alex',
'age': 19,
'hobby': 'basketball',
}
dic.upate(dic1) # dic1中有和dic相同的key,修改dic中元素value,不相同key的item添加到dic中
{'name': 'alex', 'age': 25, 'hobby': 'basketball', 'address': 'beijing', 'tel': '17888813693'}
查
dic = {
'name': 'alex',
'age': 19,
'hobby': 'basketball',
}
print(dic['name']) #alex
print(dic['sex']) # 由于找不到key会报错
res = dic.get('sex', '男') # 不会报错,找不到返回默认的
字典的遍历
dic = {'k1': 'v1', 'k2': 'v2', 'k3': 'v3', 'name': 'alex'}
for i in dic:
print(i)# 打印的是key
k1
k2
k3
name
for i in dic.keys():
print(i)# 打印的是key
k1
k2
k3
name
for i in dic.values():
print(i)# 打印的是值
v1
v2
v3
alex
for i in dic.items():
print(i)# 打印的是key-value键值对
('k1', 'v1')
('k2', 'v2')
('k3', 'v3')
('name', 'alex')
需要注意点:
1、遍历字典时,最好不要改变字典的大小
2、fromkeys(l,value)将可迭代对象各个元素作为key,将value作为各个key的值,返回一个字典
dic = dict.fromkeys('abc', 666)
print(dic)
{'a': 666, 'b': 666, 'c': 666}
dic = dict.fromkeys('abc', [])
# 坑
dic['a'].append(666)
print(dic)
{'a': [666], 'b': [666], 'c': [666]}