python基础七:字典

一 字典的特性

a)	Key必须是可哈希数据类型
b)	Value可以是任何数据类型
c)	字典查找速度快,是因为在内存中key被哈希成数字,查找key时用了二分查找法;列表慢是因为用for循环一个一个查
d)	字典是无序的
e)	字典用于存储大量关系型数据

二 字典的增

a)	dict1[key] = value  
没有这个key时是新增;有这个key时是修改
b)	dict1.default(key)  
参数key后不给参数value时,就是{key:None}
1.	如果原字典中没有这个key,就是新增{key:None}
2.	如果原字典中有这个key不管原始value是None还是非None,都不会改变原来的value,也不报错
c)	dict1.default(key,value) 
给参数value
1.	如果原字典中没有这个key,就是新增{key:value}
2.	如果原字典中有这个key不管原始value是None还是非None,都不会改变原来的value,也不报错

三 字典的删:

a)	按key删: 
i.	dict.pop(key)   #字典不支持pop(),不能不带参数,因为字典是无序的
字典的key就相当于列表的index
1.	如果key不在字典中存在,会报错
2.	如果key存在,会返回key对应的value并删除这对键值对
ii.	dict.pop(key,None) 
1.	如果key存在,就删除这对键值对
2.	如果key不存在,不会报错,会返回key后面的那个None
iii.	dict.pop(key,任意数据) 
1.	如果key存在,就删除这对键值对
2.	如果key不存在,不会报错,会返回key后面的那个参数(任意数据)

iv.	del dict[key]
1.	如果key不存在会报错
2.	如果key存在,会删除相应的键值对


b)	随机删除一对键值对: 
dict.popitem()   #有返回值,返回一个元组(key,value)
c)	清空字典: 
dict.clear()
d)	从内存中直接删除字典:
del dict

四 字典的改:

a)	按key改:
dict[key]=value
b)	用一个字典更新另一个字典:
 dic2.update(dict1) # 用dict1更新dict2
dict2中有dict1中没有的,dict2会保留
dict2中没有dict1中有的, dict2会添加
dict2和dict1中都有但值不一样的,dict2会用dict1的值

dict1 = {'name':'andy','height':1.76}
dict2 = {'name':'kk','age':32}
dict2.update(dict1)
print(dict1)
print(dict2)

{'name': 'andy', 'height': 1.76}
{'name': 'andy', 'age': 32, 'height': 1.76} 

五 字典的查:

a)	按key查:
dict[key]
i.	Key存在会返回结果
ii.	Key不存在会报错
b)	安全按key查询1:
dict.get(key)
即使key不存在也不会报错,会返回None
i.	如果key存在,返回key的value
ii.	如果key不存在,返回None
c)	安全按key查询2:
dict.get(key,任意数据)
即使key不存在也不会报错,会返回参数中设置的数据
i.	如果key存在,返回key的value
ii.	如果key不存在,返回get函数中设置的参数
d)	keys()迭代查询
dict.keys()是字典的key的列表
dict1 = {'name':'kk','age':32}
for each in dict1.keys():
    print(each)
name
Age

dict1 = {'name':'kk','age':32}
for each in dict1:
    print(each)

name
Age
e)	Values()迭代查询
dict.values() 是字典的value的列表
dict1 = {'name':'kk','age':32}
for each in dict1.values():
    print(each)

kk
32

f)	items()迭代查询
dict.items() 是字典的键值对的元组组成的列表
dict1 = {'name':'kk','age':32}
for each in dict1.items():
    print(each)

('name', 'kk')
('age', 32)
分别打印key和value:
dict1 = {'name':'kk','age':'32'}
for k,v in dict1.items():
    print(k+':'+v)

name:kk
age:32

六 用dict.fromkeys方法创建新字典:

dic=dict.fromkeys(可迭代对象作为key,任意数据类型的value)
dict.fromkeys(‘abc’,’abc’)
新字典是{‘a’:’abc’,’b’:’abc’,’c’:’abc’}
如果不给第二个参数,默认是None:
dic = dict.fromkeys('wo')
{'w': None, 'o': None}
fromkeys方法的坑:
a=[‘a’,’b’]
dict1=dict.fromkeys(‘123’,a)
a.appand(‘c’)
# dict1中所有a都改变
# {‘1’:’abc’,’2’:’abc’,’3’:’abc’}

七 修改字典中嵌套的字典和列表:

a)	修改嵌套的列表:
dict1={‘name’:[1,2,3,4,’abc’]}
#修改嵌套的列表加一个元素5
dict1[‘name’].append(5)
#把列表中的abc变成全大写
dict1[‘name’][4]=dict1[‘name’][4].upper()
b)	修改嵌套的字典:

dict1={'name':{'age':1,'wo':'andy'}}
#把嵌套的字典中新加一个键值对“xioali”:”dali”
dict1['name'].setdefault('xioali','dali')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值