从0.1开始学Python——[10]

发布于:2022-12-25 ⋅ 阅读:(196) ⋅ 点赞:(0)

从0.1开始学Python——[10]


字典在写程序中也非常常用主要表现在遍历字典进行数据处理,网络训练等方面。

遍历方法

.keys()方法,返回字典的所有键。返回形式是一个序列。

dict1 = {116: '大一大二', 404: '大三大四', 711: '研一'}
print(dict1.keys())
dict_keys([116, 404, 711])

然后用for循环遍历keys获得所有键和值。

for i in dict1.keys():
    print(i, ':', dict1[i])
116 : 大一大二
404 : 大三大四
711 : 研一

.value()方法返回所有值,也是序列。但是得不到键,因为字典是靠键找值,不能反过来

for j in dict1.values():
    print(j)
大一大二
大三大四
研一

.items()方法返回字典所有的项,也是序列,但是同时返回键和值,每个键值对以元组的形式呈现。

print(dict1.items())
dict_items([(116, '大一大二'), (404, '大三大四'), (711, '研一')])

因此遍历的时候也要同时取两个值。

for k, l in dict1.items():
    print(k, ':', l)
116 : 大一大二
404 : 大三大四
711 : 研一

集合

集合(set)和列表有一些相似之处,但也不完全一样。集合里面只能存不可变对象;而且这些存储进去的数据是无序的,没有什么索引,键之类的东西,或者说数据的顺序和先后加入顺序没关系;集合里面不能有一样的元素。创建集合一般用{}或set()函数。

p = {1, 5, 3, 2, 9, 2, 6, 1, 3}
print(p, type(p))
{1, 2, 3, 5, 6, 9} <class 'set'>

注意,{}是空字典,空集合需要用p = set()建立,这个函数同时也是类型转换函数,可以把序列和字典转换为集合。对字典使用的时候,转换完只有

p = set({116: '大一大二', 404: '大三大四', 711: '研一'})
print(p, type(p))
p = set({1, 5, 3, 2, 9, 2, 6, 1, 3})
print(p, type(p))
{404, 116, 711} <class 'set'>
{1, 2, 3, 5, 6, 9} <class 'set'>

集合没有索引之类的操作,转换为列表之类的才能这样找元素。同样可以用in和not in看元素在没在集合里面。

p = set({1, 5, 3, 2, 9, 2, 6, 1, 3})
print(1 in p)
True

len()函数用来看元素数量。注意重复元素已经自动剔除。

print(len(p))
6

.add()方法添加元素。没有返回值。

p.add('1')
p.add(11)
print(p)
{1, 2, 3, 5, 6, '1', 9, 11}

当前集合.update(其他集合)方法把其他集合加到当前集合里面。但是其他序列和字典也可以直接加进去,但同样只能加进去字典的键。

q = set('dick')
p.update(q)
print(p)
{1, 2, 3, 'k', 5, 6, 9, 'c', 11, 'i', '1', 'd'}

.pop()方法随机删除集合里面的元素,返回所删元素。

print(p.pop())
print(p)
1
{2, 3, 'k', 5, 6, '1', 'd', 9, 'c', 11, 'i'}

.remove()方法删除集合里面的指定元素。

p.remove('d')
print(p)
{2, 3, 5, 6, '1', 'k', 9, 11, 'i', 'c'}

.clear()方法清空集合。

p.clear()
print(p)
set()

.copy()方法,同样是浅复制。

w = p.copy()
print(id(p), id(w))
1774325123784 1774325122216

集合的运算

集合可以进行逻辑运算,也就是交集并集之类的运算,而且运算操作不影响原集合,只返回运算结果。

f1 = {4, 3, 9, 6}
f2 = {4, 3, 9, 7}
print(f1 & f2)  # 交集
print(f1 | f2)  # 并集
print(f1 - f2)  # 差集:只在f1有的
print(f2 - f1)  # 差集:只在f2有的
print(f2 ^ f1)  # 异或集:获取的是所有只在一个集合里面有的元素
print(f1 <= f2)  # 检查前面集合是否是后面集合的子集,如果a是b的子集,那b叫a的超集;二者一样则互为子集
f1 = {4, 3, 9}
print(f1 <= f2)
print(f2 <= f1)
f1 = {4, 3, 9, 6}
print(f1 < f2)  # 检查前面集合是否是后面集合的真子集,也就是排除了二者一样的情况,即等于号的情况
# 大于等于号或者大于号就是反过来看前面集合是否是后面集合的超集或真超集
{9, 3, 4}
{3, 4, 6, 7, 9}
{6}
{7}
{6, 7}
False
True
False
False

网站公告

今日签到

点亮在社区的每一天
去签到