Python_Day5_集合和字典

集合

  • 定义:与数学上的定义完全一致
  1. 无序性:不支持索引运算,无法通过索引实现随机访问
  2. 互异性:不能有重复元素,会自动去重
  3. 确定性:支持成员运算,判断一个元素是否属于该集合
  • 声明:例如set={1,2,3}。{ }中至少要有一个元素,即不能为空;空集合的声明为set()。集合中的元素不能为集合。
  • 集合的操作:
  1. 成员运算(in,not in)
  2. 比较运算:相等性判断(==,!=);真子集(<),子集(<=或.issubset),超集(>或issuperset)
  3. 交并差运算
set1 = {1, 2, 3, 4, 5, 6, 7}
set2 = {2, 4, 6, 8, 10}

# 交集
# 方法一: 使用 & 运算符
print(set1 & set2)                # {2, 4, 6}
# 方法二: 使用intersection方法
print(set1.intersection(set2))    # {2, 4, 6}

# 并集
# 方法一: 使用 | 运算符
print(set1 | set2)         # {1, 2, 3, 4, 5, 6, 7, 8, 10}
# 方法二: 使用union方法
print(set1.union(set2))    # {1, 2, 3, 4, 5, 6, 7, 8, 10}

# 差集
# 方法一: 使用 - 运算符
print(set1 - set2)              # {1, 3, 5, 7}
# 方法二: 使用difference方法
print(set1.difference(set2))    # {1, 3, 5, 7}

# 对称差
# 方法一: 使用 ^ 运算符
print(set1 ^ set2)                        # {1, 3, 5, 7, 8, 10}
# 方法二: 使用symmetric_difference方法
print(set1.symmetric_difference(set2))    # {1, 3, 5, 7, 8, 10}
# 方法三: 对称差相当于两个集合的并集减去交集
print((set1 | set2) - (set1 & set2))      # {1, 3, 5, 7, 8, 10}

 

交并差运算可以和赋值运算一起构成符合运算

set1 = {1, 3, 5, 7}
set2 = {2, 4, 6}
# 将set1和set2求并集再赋值给set1
set1 |= set2
print(set1)    # {1, 2, 3, 4, 5, 6, 7}
#将set1和set3求并集再赋值给set1
set3 = {3, 6, 9}
set1 &= set3
print(set1)    # {3, 6}
  • 集合的方法

  .add()----添加单个元素

  .update({})----添加一个集合的元素

  .discard()/.remove()----删除指定元素

  .pop()----随机删除并返回一个元素

  .clear()----清空集合

  .isdisjoint()----判断有无相同元素,返回Ture或False

  • 不可变集合:例如set=frozenset({1,2})。frozenset可以作为集合的元素。

 

字典

  • 声明:例如dictionary={'a':1,'b':2,'c':3}。字典中每个元素的组成为:键(key):值(value)。⚠️字典中的键必须是不可变类型,值可以是任意类型

    其他方法还有:

      使用direct函数:d=dirct('a':1,'b':2,'c':3) 或 d=dirct(zip('abc','123))

      使用生产式:d={x:2*x for x in range(1,5)}

  • 字典的操作:
  1. 成员运算:字典只能查找键是否属于成员,不能查找值是否是成员
  2. 索引运算:dictionary[key]可输出键对应的值,也可给该键赋值
  3. 函数len()返回字典成员个数
  • 字典的方法:
  1. .get(key)----获取对应键的值
  2. .keys()----获取所有键
  3. .values()----获取所有值
  4. .items()----获取所有键值对
  5. .pop()----删除并返回对应键的值
  6. .popitem----删除字典中最后一组键值对并返回对应的二元组
  7. .setdefault()----更新字典中的键对应的值或向字典中存入新的键值对
  8. .update()----更新字典元素,相同的键会用新值覆盖掉旧值,不同的键会添加到字典中

 

posted @ 2020-05-14 16:53  Ruanzy  阅读(166)  评论(0)    收藏  举报