Python --基础数据类型(dict的增删改查及其他相关操作)

本文介绍了Python中的基础数据类型——字典,包括字典的特性、键值对的增删改查操作,强调了字典的无序性和键的唯一性及可哈希性。此外,还探讨了字典的嵌套使用。
摘要由CSDN通过智能技术生成

主要内容:
1、字典的简单介绍
2、字典增删改查和其他操作
3、字典的嵌套

一 字典的简单介绍

  • 字典是Python中唯一的一个映射类型,他是以{}括起来的键值对组成
  • 在dict中key是唯一的,在保存的时候,根据key来计算出一个内存地址,然后将key-value保存在这个地址中,这种算法被称为hash算法,所以,在dict中存储的key必须是可hash的,如果搞不懂什么是可哈希,就暂时记可以改变的都是不可哈希的,那么和哈希就意味着不可变,这个是为了能准确的计算内存地址而规定的。
  • 可哈希(不可变)的数据类型:int、str、tuple、bool
  • 不可哈希(可变)的数据类型:list、dict、set
  • 语法:{key:value}
  • key必须是可哈希(不可变)的,value没有要求,可以保存任意类型的数据
dic = {123: 456, True: 999, "id": 1, "name": 'sylar',"me": ['帅哥'], (1, 2, 3): '123'}

print(dic[123])
print(dic[True])
print(dic['id'])
print(dic['stu'])
print(dic[(1, 2, 3)])

# 不合法
# dic = {[1, 2, 3]: '周杰伦'} # list是可变的. 不能作为key
# dic = {{1: 2}: "哈哈哈"} # dict是可变的. 不能作为key
dic = {{1, 2, 3}: '呵呵呵'} # set是可变的, 不能作为key
  • 注意:dict保存的数据不是按照我们添加进去的顺序保存的,而是按照hash表的顺序保存,而hash表不是连续的,所以不能进行切片处理,它只能通过key来获取dict中的数据

二 字典的增删改查和其他操作

dic = {}
dic['name'] = '李小龙'  #如果dict中没有出现这个key,就会新增一个key-value的键值对。

#如果dict中没有出现这个key-value,可以通过setdefault设置默认值
dic.setdefault('age')  #'age':None
dic.setdefault('age',26)  #'如果dict中已经存在了. 那么setdefault将不会起作用
print(dic)	#{'name': '李小龙', 'age': None}
dic = {'name':'zzz','age':26}

#删除指定的key后返回被删除的value值
ret = dic.pop("age") 

#直接删除指定的值
del dic['age'] 

#随机删除一组键值对后,返回被删除的键值对内容
ret = dic.popitem() 

# 清空字典中的所有内容
dic.clear()
dic = {'name':'zzz','age':26}
dic1 = {'name':'aaa','age':16,'sex':'male'}

#把dic1中的内容更新到dic中,如果key重名,则修改替换,如果key不存在,则新增
dic.update(dic1)
  • 查:一般用key来查找具体的数据
dic = {'name':'aaa','age':16,'sex':'male'}
print(dic['name'])
print(dic.get('age'))
  • 其他相关操作
dic = {'name':'aaa','age':16,'sex':'male'}

print(dic.keys())#获取返回一个list对象,存储这个dict中的所有key
for key in dic.keys():
	print(key)  #可通过for循环遍历出每个key

print(dic.values())#获取返回一个list对象,存储这个dict中的所有value
for value in dic.values():
	print(value)	#可通过for循环遍历出每个values

print(dic.items()) #返回可遍历的元组列表 =>dict_items([('age', 16), ('sex', 'male'), ('name', 'aaa')])
for key,value in dic.items(): #解构
	print(key,value)	
# 解构
a,b = 1,2
print(a,b)

(c, d) = 3, 4
print(c, d)

# 解构的时候注意数量必须匹配
e, f = [1, 2, 3] 	#报错
print(e, f) 

---------------
#fromkey():可以通过fromkey()方法,根据list来创建一个dict
dic = dict.fromkeys(["我爱", "你爱"], ["周杰伦"])
print(dic) #结果:{'你爱': ['周杰伦'], '我爱': ['周杰伦']}
#前面列表中的每一项都是作为key,后面的列表中的内容是作为value,生成dict

dic.get("我爱").append("陈奕迅")
print(dic) #{'我爱': ['周杰伦', '陈奕迅'], '你爱': ['周杰伦', '陈奕迅']}

注意:代码中只更改了我爱那个列表,但由于我爱和你爱用的是同一个列表,所以前面的改了,后面的也会跟着改

-------------------
#dict中的元素在迭代过程中是不允许进行删除的,如果需要删除,要把需要删除的元素暂时保存到另一个list中,然后循环list进行删除

dic = {'name': 'aaa', 'age': 16, 'sex': 'male'}
del_dic = []
#删除dict中key是name的元素
for k in dic:
    if 'name' in k:
        del_dic.append(k)

for k in del_dic:
    del dic[k]
print(dic) #结果:{'age': 16, 'sex': 'male'}

三 字典的嵌套

dic = {
    'name':'aaa',
    'age':26,
    'sex':'male',
    'children':['ccc','ddd'],
    'wife':{'name':'bbb','age':26}
}
#拿到wife中name的值
print(dic.get('wife').get('name'))

#拿到children中的ccc
print(dic.get('children')[0])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值