python笔记五:集合set、字典dict

一.集合set

1.描述:数学概念,一堆确定的无序的唯一的数据

2.特征:

    数据无序:无法使用索引和分片

    数据唯一:可用来排除重复数据

3.遍历:可哈希不可哈希

   **可哈希的数据类型,即不可改变的数据结构

   **可哈希:int、string、float、tuple, 不可哈希:list、set、dict不可以

   **字符串是可哈希的,a=’1’ a=’2’,实际上是a的指针变化了,从’1’的内存地址 指向了  ‘2’ 的内存地址

s={(1,2,3),(4,5,6),(7,8,9)}  #集合、列表、字典不可哈希,所以{{1,2,3},[4,5,6],{1:2,2:3,3:4}}不对
for k,m,n in s:
    print(k,'--',m,'--',n)
for k in s:
    print(k)

  

4.集合生成式

l=[1,2,3,4,5,5,6]
s={i for i in l if i%2==1}
print(s)

   

s1={1,2,3}
s2={'l','g','q'}
s={m*n for m in s1 for n in s2}
print(s)

   

5.添加元素add  (insert插入,append追加,add添加)

s={5,3,2,1}
s.add(4)
print(s)

   

6.删除元素:remove、discard、pop、clear

s={5,3,2,1}
s.remove(2)  #remove:删除集合中的2,如果2不在集合中则报错
print(s)

s.discard(100)  #discard:删除集合中的100,如果100不在集合中不报错
print(s)

s.pop()   #pop:随机删除集合中的一个元素
print(s)

s.clear()   #clear:清空集合
print(s)

   

7.集合的函数

intersection(交集)、difference(差集)、union(并集)、

issubset(检查一个集合是否为另一个集合的子集)、

issuperset(检查一个集合A是否是另一个集合B的超集,即B是否是A的子集)、

s1={1,2,3,4,5,6}
s2={4,5,6,7,8,9}

s_1=s1.intersection(s2)  #intersection:求集合s1、s2的交集
print(s_1)

s_2=s1.difference(s2)  #difference:求集合s1、s2的差集
print(s_2)

print(s1-s2)  #‘-’:求集合s1、s2的差集,同difference

s_3=s1.issubset(s2)  #issubset:求集合s1是否是s2的子集
print(s_3) 

   

8.冰冻集合:不能修改的集合

s=frozenset({1,2,3,4,5,6})
print(s)

二.字典dict

1.描述:没有顺序的键值对,形式为 {键:值 ,键:值 ,键:值}

2.创建字典

d=dict() #创建空字典
print(d)
d={'one':1,'two':2,'three':3} #直接用键值对创建
print(d)
d=dict({'one':1,'two':2,'three':3}) #dict+字典内容创建
print(d)
d=dict(one=1,two=2,three=3) #关键字创建,keyword can't be an expression,所以one不能加引号
print(d)
d=dict([('one',1),('two',2),('three',3)]) #list+tuple创建
print(d)

   

3.特征

   无序:没有分片和索引

   key必须可哈希:int、string、float、tuple可以,list、set、dict不可以

   value可以使任何值

4.字典常用操作

访问、改变、删除数据

d={'one':1,'two':2,'three':3}
print(d['one'])   #访问某个值

d['one']='one' #改变某个值
print(d)

del d['one']  #删除
print(d)

   

成员检测

d={'one':1,'two':2,'three':3}

if 'one' in d:  #检测key 或if 'one' in d.keys():
    print('one')

if 1 in d.values():  #检测value
    print(1)

if ('one',1) in d.items():  #检测key和value
    print('one',1)

   

遍历:

d={'one':1,'two':2,'three':3}
for k in d.keys():  #遍历key,也可以for k in d:
     print(k,d[k])

for v in d.values():  #遍历value
    print(v)

for k,v in d.items():  #遍历键值对
    print(k,'--',v)

   

字典生成式:

d={'one':1,'two':2,'three':3}

dd={k:v for k,v in d.items() if v%2==1}
print(dd)

   

5.字典相关函数

 通用函数:len、max、min、clear

 items:返回字典键值对组成的元组,该结构可迭代

 keys:返回字典的键组成的一个结构,可迭代

 values:返回字典的值组成的一个结构,可迭代

d={'one':1,'two':2,'three':3}

i=d.items()
print(i)
print(type(i))

k=d.keys()
print(k)
print(type(k))

v=d.values()
print(v)
print(type(v))

   

get:根据键返回相应的值,好处是可以设置默认值

d={'one':1,'two':2,'three':3}

print(d.get('one','该数据不存在')) #若one不在d中则返回默认值
print(d.get('one33','该数据不存在'))

print(d['one'])  #该方法如果one不在d中会报错

   

fromkeys:使用一个序列作为键,使用一个值作为字典的所有键的值

l=['one','two','three']

d=dict.fromkeys(l,'hhh')
print(d)

  

猜你喜欢

转载自blog.csdn.net/qq_41518266/article/details/86239379
今日推荐