Python语法学习记录(10):dict使用方法简介

一、介绍

dict 的用法比较简单,它可以存储任意值,并允许是不同类型的值,下面实例来说明:
下面例子中 a 是整数, b 是字符串, c 是数组,这个例子充分说明哈希数组的适用性。

每一个元素是pair,包含key、value两部分。key是Integer或string类型,value 是任意类型。
键是唯一的,字典只认最后一个赋的键值。
不允许同一个键出现两次。创建时如果同一个键被赋值两次

二、字典初始化

1、普通赋值方法

print("===="*5,"dict init")
dic1 = {'a': 100, 'b':'boy', 'c':['o', 'p', 'q']}
print(type(dic1))
print("dic1:",dic1)
#可以直接增加一个元素,如果同名,则会改变原来的key的元素的值
dic1['d'] = 'dog'
dic1['c'] = 111               # 更新 'c'
print("dic1:",dic1)
#键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行
dic2 = {'a': 1}
print ("dic2: ", dic2)
dic2 = {('a'): 1}
print ("dic2: ", dic2)
dic2 = {('a','b'): 1}
print ("dic2: ", dic2)
#dic2 = {['a']: 1}   #error 

2、元组初始化方法

print("===="*5,"touple init")
tuple1 = ('name', 'age', 'sex')
dict1 = dict.fromkeys(tuple1)
print ("新的字典为 : %s" %  str(dict1))
dict1 = dict.fromkeys(tuple1, 10)
print ("新的字典为 : %s" %  str(dict1))
dict1 = dict.fromkeys(tuple1, [1,2,3])
print ("新的字典为 : %s" %  str(dict1))

[外链图片转存失败(img-NuyIuIIR-1567578804297)(https://raw.githubusercontent.com/ZhouziqunZZQZZQ/picBed/master/20190701233415.png)]

三、字典的引用遍历合并

print("===="*5,"key and value")
dic1 = {'a':1,'b':2,'c':3}
#输出所有的key
print("keys:",dic1.keys())
print(type(dic1.keys()))
#输出所有的value
print("values:",dic1.values())
print(type(dic1.values()))
#同dict[key],多了个没有则返回缺省值,0。[]没有则抛异常
print(dic1.get('a',"don not find"))
print(dic1.get('z',"don not find"))
print(dic1.get('z'))
print('a' in dic1)
#遍历
for k in dic1:
    print(dic1.get(k))
dic1 = {'a':1,'b':2,'c':3}
print ("a 键的值为 : %s" %  dic1.setdefault('a', 'ff'))
print ("d 键的值为 : %s" %  dic1.setdefault('d', 'ff'))
print ("新字典为:", dic1)
dic1 = {'a':1,'b':2,'c':3}
print (type(dic1.items()))
print ("Value : %s" %  dic1.items())
for i,j in dic1.items():
    print(i, ":\t", j)


#计算字典元素个数,即键的总数
dic1 = {'a':1,'b':2,'c':3}
print("len:",len(dic1))
#输出字典,以可打印的字符串表示。
dic1 = {'a':1,'b':2,'c':3}
print("str:",str(dic1))
#增加合并字典
dic1 = {'a':1,'b':2,'c':3}
dic2 = {'d':4,'e':5,'f':6}
dic1.update(dic2)   #不可以使用加法
print("dic1:",dic1)

四、字典的浅复制

#返回一个字典的浅复制
print("===="*5,"copy")
dic1 = {'a':1,'b':[2,3,4],'c':3}
dic2 = dic1          # 浅拷贝: 引用对象
dic3 = dic1.copy()   # 浅拷贝: 深拷贝: 父对象(一级目录),子对象(二级目录)不拷贝,还是引用
# 修改 data 数据
dic1['a']=100
dic1['b'].remove(2)
# 输出结果
print(dic1)
print(dic2)
print(dic3)#存在浅拷贝

五、字典删除

#删除
print("===="*5,"del")
dic1 = {'a':1,'b':2,'c':3}
dic2 = {'d':4,'e':5,'f':6}
dic3 = {'g':7,'h':8,'i':9}
dic2.clear() #清空字典 后为空字典  还属于有定义状态  删除字典内所有元素
print("dic2:",dic2)
print(type(dic2.keys()))
del dic3['g']
print("dic3:",dic3)#删除dic后属于没有定义状态会报错
del dic3
#print("dic3:",dic3)#删除dic后属于没有定义状态会报错
dic1 = {'a':1,'b':2,'c':3}
pop_obj=dic1.popitem()
print(pop_obj)   
print(dic1)
dic1 = {'a':1,'b':2,'c':3}
pop_obj=dic1.pop('a')
print(pop_obj)
print(dic1)
dic1 = {'a':1,'b':2,'c':3}
pop_obj=dic1.pop('d','none')
print(pop_obj)
print(dic1)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值