python数据类型【字典(dict)】

python数据类型【字典(dict)】

字典是无序,键不重复且元素只能是键值对的可变的容器

data={'k1':'v1','k2':'v2'}
  • 字典也是个容器

  • 元素必须是键值对

  • 键不能重复,重复会被覆盖

    data={'k':1,'k':2}
    data {'k'2}
    
  • 无序(在python3.6+字典就是有序了,之前的字典都是无序的)

1.定义

  v1={}
  v2=dict()

字典对键值的要求:

  • 键:必须可哈希
  • 值,任意类型
  data={
  'wxy':29,
  True:1,
  123:5,
  (11,22):['a','b']
  }

一般情况在什么情况下会用到字典?

表示一组固定信息,用字典更加直观

  #用户列表
  user_list=[{'name':'wxy','age':18},{'name':'qfy',age:18}]

2.独有方法

  1. 获取值 get 【键不存在,不报错,默认返回None】

    info={
    'name':'wxy',
    'age':18
    }
    info.get('age')  18
    
  2. 所有的键 keys()

    info={
    'name':'wxy',
    'age':18
    }
    data=info.keys()
    data		dict_keys(['name', 'age'])
    

    注意:在python2中字典.keys()直接获取到的是列表,而python3中返回的是高仿列表,这个高仿的列表可以被循环显示

    info={
    'name':'wxy',
    'age':18
    }
    for i in info.keys():
    	print(i)
    
  3. 所有的值 values()

    info={
    'name':'wxy',
    'age':18
    }
    data=info.values()
    data		dict_values(['wxy', 18])
    
  4. 所有的键值 items()

    info={
    'name':'wxy',
    'age':18
    }
    data=info.tiems()
    data      dict_items([('name', 'wxy'), ('age', 18)])
    
    #判断是否存在
    info={
    'name':'wxy',
    'age':18
    }
    if ('name',18) in info:
    	print('yes')
    
  5. 设置值 setdefault()

    info={
    'name':'wxy',
    'age':18
    }
    info['email']=123@qq.com
    info.setdefault('email','123@qq.com')
    info   {'name':'wxy','age':18,'email':'123@qq.com'}
    
    #有键不修改
    info.setdefault('email','567@qq.com')
    info   {'name':'wxy','age':18,'email':'123@qq.com'}
    
  6. 更新字典键值对 update()

    info={'name':'wxy','age':18}
    info.update({'age':14,'email':'123@qq.com'})
    info  {'name':'wxy','age':14,'email':'123@qq.com'}
    
  7. 移除指定键值对 pop()

    info={'name':'wxy','age':14,'email':'123@qq.com'}
    info.pop('age')
    info  {'name':'wxy','email':'123@qq.com'}
    
  8. 按照顺序移除(后进先出) popitem()

    info={'name':'wxy','age':14,'email':'123@qq.com'}
    data=info.popitem() 
    data {'email':'123@qq.com'}
    info {'name':'wxy','age':14}
    
  9. 根据键,设置默认值

     # dict.fromkeys(键列表,默认值)
    stopwords = dict.fromkeys(['的', '或', '等', '是', '有', '之', '与'],None)
    

    在这里插入图片描述

    • py3.6后,popitem移除最后的值
    • py3.6之前,popitem随机移除

3.公共方法

  1. 求并集(python3.9新加入)

    v1={'k1'1'k2':2}
    v2={'k2'2'k4':4}
    v3=v1|v2
    v3  {'k1'1'k2':2,'k4':4}
    
  2. 长度

    info={'name':'wxy','age':18}
    len(info)  2
    
  3. 是否包含

    info={'name':'wxy','age':18}
    v1='age' in info
    v1  True
    
  4. 索引值(键)

    字典不同于元组和列表,字典的索引是键,而列表和元组是0,1,2等数值

    info={'name':'wxy','age':18}
    info['age']  18
    
  5. 根据键修改值 和 添加值 和 删除键值对

    通过键可以对字典进行过添加和更新操作

    #添加
    info={'name':'wxy','age':18}
    info['gender']='女'
    info    {'name':'wxy','age':18,'gender':'女'}
    
    #修改
    info={'name':'wxy','age':18}
    info['age']=21
    info    {'name':'wxy','age':21}
    
    #删除
    info={'name':'wxy','age':18}
    del info['age']    或 info.pop('age')
    info    {'name':'wxy'}
    
  6. for循环

    由于字典也属于是容器,内部可以包含多个键值对,可以通过循环对其中的:键,值,键值进行循环

    info={'name':'wxy','age':18}
    #所有键
    for i in info:
    	print(i)
    
    #所有键
    for i in info.keys():
    	print(i)
    	
    #所有值
    for i in info.values():
    	print(i)
    
    #所有键值
    for i in info.items():
    	print(i)
    

4.转换

转换为字典

v=dict([('k1',1),('k2',2)])
v  {'k1':1,'k2':2}
info={'name':'wxy','age':18}
print(list(info))   ['name', 'age']   #默认是键
print(list(info.keys())) 		['name', 'age']
print(list(info.values()))      ['wxy', 18]
print(list(info.items()))       [('name', 'wxy'), ('age', 18)]

5. 其他

5.1存储原理

在这里插入图片描述

5.2速度快

info={'name':'wxy','age':18}
for 'wxy' in info:
	print('yes')

5.3嵌套

  • 字典的键必须可哈希(list/set/dict不可哈希)
info={
(1,2):1
}
#错误的
  • 字典的值可以是任意类型

  • 字典的键和集合的元素再遇到布尔值和1,0时,需注意重复的情况

  • 元组的元素不可以被替换

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荼靡~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值