python学习第七站:元组&集合&字典


不希望数据改变的时候用元组,其余情况用列表

元组

如果非空元组,则至少有一个逗号

tup1 = 1,2,3,4
tup2 = (1,2,3,4)
# 相同

元组解包⬇️将元组元素赋值给一个变量

a,b,c,d = tup1
# a = 1,b = 2,c = 3,d = 4
#变量须与元素一一对应,不然会报错
a,b,*c = tup1
# a = 1,b = 2,c = [3,4]
# 数量不对应时,可在变量前加一个*,将获取剩余的元素以列表形式返回

字典

与列表类似,用来存储对象的容器。
列表存储性能强,但查询数据性能差。而字典正好相反。
{key:value}键值对,通过名字可以快速查询到指定的元素
dict()函数可以将包含双值子序列转化为字典(序列中有2个值)

dict([(‘name’,‘aaa’),(‘age’,‘3’)])

获取键值对
get(key,[default])根据键值来获取字典值
若没有,则返回none
也可以指定第二个参数作为默认返回值。
d.get(‘hi’,‘no here’)

修改/添加字典
d[key] = value

向字典中添加key-value,需字典中没有的key-value,不然返回key值
d.setdefault(‘职业’:‘学生’)

更新字典
d.update(d2)#将d2更新到d中

删除
关键字del删除key-value
del d[‘key’]

随机删除一个键值对,一般是最后一个
有返回值=删除的键值对
d.popitem()

根据key删除键值对,有返回值=key对应的value值
pop(‘key’,[default])有默认值
d.pop(‘name’)

清空字典
d.clear()#全部清空

浅复制

copy()可对字典浅复制
只复制第一层的字典内容,修改子字典的时候,两个会一起变化。
潜复制只会复制字典本身,如果字典中还有个字典是不会进行复制的

d = {'a':{'name':'sad','age':34},'b':2,'c':3}
d2=d.copy()

遍历字典

d.keys()——保存字典所有的键序列[]

for k in d.keys():
	print(d[k])

d.values()——保存字典的值,返回序列

for v in d.values():
	print(v)

d.items()——返回字典所有的项,序列,包含双值子序列key-value

for k,v in d.items():
	print(k,'=',v)

集合

和列表相似。但1、集合中只能存储不可变对象,并且2、对象是无序的,3、不能出现重复的元素-y重复的会被去重
s = {1,2,3,4,5}
s = {[1,2,3],[4,5,6]}会报错

空集合
s = set()
print(s)

set()可以将序列和字典转化为集合
s = set([1,2,3,4,5,6])
s = set({‘a’:1,‘b’:2,‘c’:3})#只保留字典的键(a,b,c)

不能通过索引取值

集合的使用

  • in 和 not in
  • len() #获取集合的数量
  • add()#向集合中添加元素
  • update() #将一个集合的元素添加到另一个集合中
  • pop() #删除集合中的一个随机元素,有返回值
  • remove() #删除集合中指定元素
  • clear() #清空集合

集合的运算

  • 交集运算 &

print(s1 & s2)

  • 并集运算 |

print(s1 | s2)

  • 差集运算 -

print(s1 - s2) #在s1中不在s2中的

  • 异或集运算

print(s1 ^ s2) #s1和s2中不相交的部分

  • <= 检查一个集合是否是另一个集合的子集
  • < 检查一个集合是否是另一个集合的真子集
  • ,>=检查一个集合是否是另一个集合的超集
  • ,>检查一个集合是否是另一个集合的真超集
  • 上面逗号是标记使用,不在代码中

做练习

a = {“name”:“123”,“data”:{“result”:[{“src”:“python1”},{“src”:“python2”},{“src”:“python3”}]}} 找到python1/python2/python3

a = {"name":"123","data":{"result":[{"src":"python1"},{"src":"python2"},{"src":"python3"}]}}

for i in range(3):
    b = a["data"]["result"][i]["src"]
    print(b)

有如下值集合[11,22,33,44,55,66,77,88,99,90], 将所有大于66的值保存至字典的第一个key中,将小于66值保存至第二个key的值中。

l = [11,22,33,44,55,66,77,88,99,90]
l1 = []
l2 = []
for i in l:
    if i >= 66:
        l1.append(i)
    else:
        l2.append(i)
dic = {"k1":l1,"k2":l2}
print(dic)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值