字典和集合

集合(Set)
集合是无序的,无序也就没有索引,不能进行索引相关的操作。无序,python解释器就不能通过索引(位置)区分集合中的相同元素,所以集合中不能有相同的元素。
集合用大括号{ }表示。
集合中元素的数据类型可以不同,但集合中不能嵌套列表、元组、集合、字典。

a={1,1,3}
print(a)  #{1,3}  会自动去掉重复的元素

a={1,"ok"}   #数据类型可以不同
print(a)   #{1, 'ok'}

a={1,"ok",[1,2]}   #报错  集合中元素的数据类型可以不同,但集合中不能嵌套列表、元组、集合、字典。
print(a)

集合之间可以进行集合运算

a={1,2,3}
b={1,2,6}

print(a|b)  #求并集  {1, 2, 3, 6}
print(a&b)  #求交集   {1, 2} 
print(a-b)  #求差集(a中有,b中没有)  {3}
print(a^b)  #并集减去交集,即把a、b独有的元素组成一个集合   {3, 6}

字典(Dictionary)
字典是无序的。
字典中一个键值对就是一个元素。因为是用key来标识元素,所以同一个字典中,key不能相同(不会报错,但后面的值会覆盖前面的值)。
字典中的key、value的数据类型可以不同,但key必须是不可变的数据类型,比如数字、字符串、元组。
字典用大括号{ }表示。

a={"name":"张三","age":18}  #key、value之间冒号分隔,键值对之间逗号分隔

a={1:"张三","age":18,"score":(100,90,99)}  #字典中的key可以是不同的类型,但key必须是不可变的数据类型。value可以是任何类型。

a={"name":"张三","name":"李四"}  #key不能相同,相同时,后面的值会覆盖前面的值
print(a)   #{'name': '李四'}

集合的操作:
1.创建:
  s1 = set(list)
  s2 = set(tuple)
  s3 = set(dict)
2.添加数据:
一.插入单个元素
  s1.add(date) :
注意事项: 不能添加list, dict可变对象,但是可以用tuple;添加已经有的元素不会报错,但是没有效果。
二.插入多个元素
  s1.update(date) : date可以使list, str, tuple 但是是将其中的元素打乱逐个添加,也可能有添加后有顺序。

3.删除元素:s1.remove(date) : 删除其中的date元素
4.遍历:
  for i in set:
    print(i)
5.集合的运算(都是形成新的集合):
一.交集:
  s1 = s2 & s3
二.并集:
  s1 = s2 | s3
6.与list 和 tuple的转换:
  s1 = set(lsit)
  list1 = list(s1)
  s2 = set(tuple)
  tuple1 = tuple(s2)
应用场景:用来对list和tuple中的元素去重
字典的操作:
1.get(key): 查看dict中是否有key值,有返回True, 否则返回 False
2.下标访问:print(dict[key]) #这样没有key的话会报异常
3.添加数据:dict[key] = date; # 如果之前字典中没有key值,就是添加数据;若有的话,就是覆盖之前存在的数据。
4.删除数据:dict.pop(key): 删除key链接的value
5.字典遍历:
   一.键值key的遍历:
    for key in dict:
      print(key)
   二.value值的遍历:
    for value in dict.values():
    print(yalue)
  三.键值和vaule值的遍历:
    for k, v in dict.item():
    print(k, v)
  四.下标和value值的遍历(不常用):
    for i, v in enumerate(dict):
    print(i, v)
6.与list的对比:
  一.查找和插入的速度非常快,并且不会随着数据的增多而变慢
  二.浪费内存空间
  在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值