Python基础-07 集合

集合的使用

  • 集合是一个不重复的无序的集合,可以用大括号或者 set 来表示
  • {} 有两种意思:字典;集合
  • {}中如果放的是键值对,他就是一个字典;如果 {} 中放的是单个的值,就是个集合
person = {'name':'zhangsan','age':'18'}  # 字典
x = {'hello','good',18}  # 集合

# 集合有自动去重的功能
name = {'zhangsan','lisi','wangwu','zhangsan','jack','tony','lisi'}
print(name)  # {'wangwu', 'jack', 'lisi', 'tony', 'zhangsan'}

# set 可以进行增删改查的方法,但是不常用,add,pop(随机删除一个元素),remove(删除一个指定元素,没有就报错),clear(清空集合),union(将多个集合合并,生成一个新的集合),update(将一个集合拼接到指定的集合中)
name.add("liuziheng")  # 增加
print(name)  # {'jack', 'liuziheng', 'lisi', 'wangwu', 'zhangsan', 'tony'}

name.clear()  # 清空一个集合
print(name)  # set()  注意! 一个 {} 表示的是一个空字典,空集合用 set()来表示

集合的高级使用

  • set 支持很多算数运算符
  • set 不支持加法
  • - 减法可以求两个集合的差集
  • & 可以求两个集合的交集
first = {'李白','白居易','李清照','杜甫','王昌龄','王维','孟浩然','王安石'}
second = {'李商隐','杜甫','李白','白居易','岑参','王昌龄'}

# 求first和second的差集
print(first - second)  # {'王维', '王安石', '孟浩然', '李清照'} first有second没有
print(second-first)  # {'岑参', '李商隐'} second有first没有

# 求first和second的交集
print(first & second)  # {'王昌龄', '白居易', '杜甫', '李白'}

# 求first和second的并集
print(first | second)  # {'王维', '白居易', '李商隐', '王安石', '岑参', '孟浩然', '杜甫', '李白', '王昌龄', '李清照'}

# 求first和second的差集的并集,first有second没有加上second有first没有
print(first ^ second)  # {'李清照', '王维', '李商隐', '王安石', '岑参', '孟浩然'}

集合的练习

  • 对如下的列表进行去重并排序
nums = [5,8,7,6,4,1,3,5,1,8,4]
nums = set(nums)
nums = list(nums)
nums.sort()
print(nums)
  • Python中,存在一个内置函数可以执行字符串里面的代码
  • eval
a = "print('this is a eval test')"
eval(a)  # this is a eval test
  • json:json的本质是个字符串
  • json可以把列表,元组,字典等转换为json字符串
# json dumps loads
# python -> json
# 字符串 ->  字符串
# 字典  ->   对象
# 列表/元组/集合 -> 数组
import json
person = {'name':'zhangsan','age':'18','gender':'female'}
m = json.dumps(person)
print(m)
print(type(m))

# {"name": "zhangsan", "age": "18", "gender": "female"}
# <class 'str'>
# 转换后不能再像字典一样根据key查找value

# 如何把一个字符串变成字典
n = '{"name": "zhangsan", "age": "18", "gender": "female"}'
p = eval(n)
print(p)  # {'name': 'zhangsan', 'age': '18', 'gender': 'female'}
print(type(p))  # <class 'dict'>

s = json.loads(n)
print(s)  # {'name': 'zhangsan', 'age': '18', 'gender': 'female'}
print(type(s))  # <class 'dict'>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值