不希望数据改变的时候用元组,其余情况用列表
元组
如果非空元组,则至少有一个逗号
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)