字典、集合、可迭代对象、迭代器

字典

  • 字典是Python中唯一内建的映射=类型,用一对花括号“{”和“}”作为边界,元素之间以逗号分隔,每个元素是一对键(key)和值(value),键和值之间用冒号分隔。
    • d={"name":"Tom","age":10,5:50}
    • d
    • 返回结果:{‘name’:‘Tom’,‘age’:10,5:50}
    • type(d)
    • 返回结果:<class ‘dict’>
  • 字典可通过key查找关联数据Value。
    • d["age"]
    • 返回结果:10
  • 字典的元素没有位置索引,因此不能像序列那样通过位置索引来查备找成员数据。但是每一个值都有一个对应的键。字典的用法是通过键key来访问相应的值value。
  • 字典的键是不重复的。
  • 字典可以通过以下的方式创建:

在这里插入图片描述
在这里插入图片描述

  • 在字典中,键可以是任何不可修改类型的数据,如数值、字符串和元组,列表是可变的,不能作为字典的键;而键对应的值可以是任何类型的数据。

字典操作

1. 字典中“键-值”对的数量

  • len() 可以返回字典中项(键-值对)的数量。

2. 查找与特定键相关联的值

  • 查找与特定键相关联的值,其返回就是字典中与给定的键相关联的值。
  • number={1:23,4:56,7:89,10:1112}
  • number=['1']
  • 返回结果:23
  • 如果指定的键在字典中不存在,则报错。

3. 修改字典中的数据

  • 在字典中,某个键相关联的值可以通过赋值语句来修改,如果指定的键不存在,则相当于向字典中添加新的键值对。
  • a={12:34,45:56,67:78}
  • a['12']='33'
  • a
  • 返回结果:[12:33,45:56,67:78]
  • a['99']='100'
  • a
  • 返回结果:[12:33,45:56,67:78,99:100]

4. 删除字典条目

  • del命令可以用来删除字典条目或者整个字典。
  • a={12:34,45:56,67:78}
  • del a['12']
  • a
  • 返回结果:{45:56,67:78}
  • del a #删除整个字典
  • 注:这时候再想返回字典 a 的值就会报错。

5. 检查字典中是否含有某的项

  • in命令可以查找某键值是否在字典中。如果存在返回“True”,否则返回“False”。

字典方法

1. keys()、values()

  • keys()方法将字典中的键以可迭代的dict_keys对象返回。values()方法将字典中的值以可迭代的dict_values对象形式返回。
    • 可迭代对象的意思是指存储了元素的一个容器对象。
  • 例如:
    • a={12:34,45:56,67:78}
    • a.keys()
    • 返回结果:dict_keys([12,45,67])
    • list(a.keys())
    • 返回结果:[12,45,67]
    • tuple(a.keys())
    • 返回结果:(12,45,67)
    • values()和key()操作方法相同,一个返回的是键,一个返回的是值。

2.items()

  • items()方法将字典中的所有键和值以可迭代的dict_items对象形式返回,每对键值对组成元组作为一个元素。
  • a={12:34,56:78,90:100}
  • a.item()
  • 返回结果:([(12,34),(56,78),(90,100)])
  • list(a.items())
  • 返回结果:[(12,34),(56,78),(90,100)]

3. setdefault(key,default=None)

  • 如果字典中包含参数key对应的键,则返回该键对应的值;
  • 否则以参数key的值为键,以参数default的值为该键对应的值,在字典中插入键-值对元素,并返回该元素的值部分。
  • 例如:在这里插入图片描述

4. update()

  • update()方法将另一个字典中的所有键值对一次性地添加到当前字典中,如果两个字典中存在有相同的键,则以另一个字典中的值更新当前字典。
  • 例如:在这里插入图片描述

5. clear()

  • clear()方法将字典中的所有条目删除,变成空字典
  • 注意与del命令的区别。

6.pop(k[,d])

  • pop()方法是删除字典中指定键k对应的键值对,并返回相应的值。
  • 如果字典中不存在键为k的项,且指定了参数d,则返回d;否则将抛出KeyError。
  • 例如:在这里插入图片描述

7. popitem()

  • popitem()方法能够弹出字典的最后一个元素,并将该元素中的键和值构成一个元组返回,如果字典为空则触发异常。
  • 例如:
    在这里插入图片描述

8. get()

  • get(key,default=None)返回指定键所对应的值,如果键不存在则返回默认值。默认值为None,也可以自己指定。
  • 例如:
    在这里插入图片描述

遍历字典

1. 遍历字典的键

  • 如图:在这里插入图片描述

2. 遍历字典的值

  • 如图:在这里插入图片描述

3.遍历字典的键值对

  • 如图:在这里插入图片描述

列表、元组与字典之间的转换

1. 列表与字典之间的转化

  • Python中的list()可以将字典转换为列表
  • 如图:在这里插入图片描述

2. 元组与字典之间的转化

  • Python中的tuple()可以将字典转换为元组。其3使用方法同list()。

集合

  • 集合是一组用“{”和“}”括起来的无序、不重复元素, 元素之间用逗号分隔。元素可以是各种类型的不可变对象 。Python提供了集合类型set,用于表示大量无序、不重复元素的集合。

集合的创建

  • 集合有两种创建方式:
    • 一种是用一对花括号将多个元素括起来,元素之间用逗号分隔:
    • 另一种是用setO)创建集合:
      • 使用set(obi)将字符串、列表、元组等类型的obi转换为集合类型
      • 使用set()创建空集合
        例如:
        在这里插入图片描述
    • 注意:空集合只能用set()来创建,而不能用花括号{}表示,因为Python将{}用于表示空字典。
      在这里插入图片描述
  • 集合中没有相同的元素,因此Python在创建集合的时候会自动删除掉重复的元素。
  • 例如:
    • gg={1,2,2,3,4,5,6,6,7,8,8,9}
    • gg
    • 返回结果:{1,2,3,4,5,6,7,8,9}

集合的运算

1. len()

  • len()函数返回集合中元素的个数。

2. in

  • 判断某元素是否存在于集合之中,判断结果用布尔值True或False表示。

3. 并集、交集

  • 并集:创建一个新的集合,该集合包含两个集合中的所有元素。
  • 交集:创建一个新的集合,该集合为两个集合中的公共部分。
  • 如图:
    在这里插入图片描述

4. 差集

  • A-B表示集合A与B的差集,返回由出现在集合A中但不出现在集合B中的元素所构成的集合。
  • 例如:在这里插入图片描述

5. 对称差

  • 返回由两个集合元素中那些不重叠的元素所构成的集合。
  • 例如:
    在这里插入图片描述

可迭代(Iterable)对象

  • 从表面来看,只要用for…in…进行遍历的对象就是可迭代对象,那么列表、元组、字符串、字典都是可迭代对象(这几种不是迭代器)。
  • 实际上,如果一个类实现了__iter__方法,那么这个类的对象就是可迭代对象。
  • 例如:
    在这里插入图片描述
    在这里插入图片描述
  • list类实现了__iter__方法,list对象就是可迭代对象。
  • 调用内置函数isinstance()来判断一个对象是否属于可迭代对象。
    • 例如:在这里插入图片描述
    • 数字是不可迭代对象,而一个range对象是可迭代的,集合也是可迭代的。

迭代器(Iterator)

  • 实现了__iter__方法和__next__方法的类的对象称为迭代器(Iterator)
    • 可以通过对象的__next__方法不断返回下一个值。
    • 也可以通过内置函数next()访问参数中对象的下一个元素。
  • 可以通过调用Python内置函数isinstance()来判断一个对象是否属于迭代器(Iterator)
    • 与上图类似,就是把Iterable换成Iterator。
  • 虽然列表、元组、字符串、字典、集合都是可迭代(Iterable)对象而不是迭代器(Iterator),但可以通过iter()函数获得一个迭代器(Iterator)。
    在这里插入图片描述
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

宇宙超级无敌霸王龙捏

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

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

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

打赏作者

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

抵扣说明:

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

余额充值