字典——python基础篇

字典是什么

字典是无序、可变的容器型数据类型,元素以键值对存储,以键获值。

什么时候用字典:需要保存多个数据,并需要对数据(多个数据的意义不同)进行区分。

  • 字典是容器型数据类型,容器的标志{},多个元素用逗号隔开。

  • 字典的元素都是键值对,以键获值。{key1:value1,key2:value2,…}

  • 字典中元素: 键值对

    • 键 - 不可变;唯一(一般是字符串)
    • 值 - 任何类型的数据;可重复
  • 字典是Python中唯一的内置映射类型,其中的值不按顺序排列,而是存储在键下。键可能是数、字符串或元组。

字典的增删查

查 - 获取字典的值

  • 获取单个元素对应的值:

    • 字典[key]: 获取字典中指定key对应的值(如果key不存在报错)

    • 字典.get(key): 获取字典中指定key对应的值(如果key不存在返回None)

      # 获取单个值
      # 方法一:
      dog = {'name': '程程', 'age': 3, 'breed': '哈士奇', 'gender': '公', 'weight': 20}
      dog_name = dog['name']
      print(dog_name)  # 程程
      # 没有对应的key会报错
      # print(dog['height'])
      
      # 方法二:
      get_name = dog.get('name')
      print(get_name)
      # 没有对应的key不会报错
      print(dog.get('fan'))
      # key不存在时,放回默认值
      print(dog.get('fan', 0))
      """
      程程
      None
      0
      """
      
  • 遍历:

相比于检查列表是否包含指定的值,检查字典是否包含指定的键的效率更高。数据结构
越大,效率差距就越大。

  • 方法一: 变量取到的值是字典中的key。(此方法效率最高)

    ​ for 变量 in 字典:

    ​ 循环体

  • 方法二: 遍历获取所有的值

    ​ for 变量 in 字典.values():

    ​ 循环体

  • 方法三: 获取所有的key和value

    ​ for 变量1,变量2 in 字典.items():

    ​ 循环体

print("====遍历====")
print("====方法一=====")
# 遍历
# 方法一
for i in dog:
    print(dog[i])

print("====方法二=====")
# 方法二
for i in dog.values():
    print(i)

print("====方法三=====")
# 方法三
for k, v in dog.items():
    print(k, ':', v)


"""
====遍历====
====方法一=====
程程
3
哈士奇
公
20
====方法二=====
程程
3
哈士奇
公
20
====方法三=====
name : 程程
age : 3
breed : 哈士奇
gender : 公
weight : 20
"""

增 - 添加键值对

  • 字典[key]=value:如果key存在,就将key对应的值,修改成指定的值。如果key不存在,就是添加键值对。
  • 字典.setdefault(key,value):不能修改,只能增加,如果key已存在,不添加操作。

删除

  • del 字典[key]:删除指定key对应的键值对。(key不存在,会报错)
  • 字典.pop(key):取出指定key对应的值,并放回指定的值。
  • 字典.popitem():随机取出指定key对应的键值对,并放回键值对。

字典相关的操作

  • 字典不支持加法和乘法运算
  • 字典只支持比较相等,不支持比较大小。
    • 保证键值对的个数、值一致,为True,否则False
  • innot in :判断字典中是否存在指定的key。

相关函数

  • len(字典): 统计字典中键值对的个数
  • dict(数据): 将指定的数据转化成字典。
    • 要求:
      1. 是容器型数据类型
      2. 数据中元素是有且只有两个元素的容器(小容器)
      3. 小容器中的第一个元素是不可变类型。

字典转成其他的数据类型

  • bool(字典) - 空字典会转换成False,其他都是True
  • list(字典):将字典的key作为列表的元素
  • tuple(字典):将字典的key作为元组的元素
  • str(字典):将字典的{}和键值对全部转换为字符串

相关的方法

  • 字典.clear():将字典清空
  • 字典.copy():复制一个字典并放回。(也复制了字典的内容)
  • 字典.fromkeys(序列)/dict.fromkeys(序列):创建新的字典,字典的key传入序列中的元素,值是固定的None。(此序列元素类型不可变)
  • 字典.fromkeys(序列,值)/dict.fromkeys(序列,值):创建新的字典,字典的key传入序列中的元素,值是指定的值。
  • 字典.items():获取字典所有的key和value,返回一个容器,容器中的元素是元组,每个元组对应一个键值对。(不是列表)
  • 字典.keys():获取字典所有的key,返回一个容器。(不是列表)
  • 字典.values():获取字典所有的value,返回一个容器。(不是列表)
  • 字典.update(序列):将序列转化为字典,用转换的字典更新指定的字典。(不存在就添加,存在就修改)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值