30天python基础(字典,集合)

⼀、集合(set)
特点:不允许有重复元素,如果添加重复元素,则会⾃动过滤,可以进⾏交集、并
集的运算。
本质:⽆序且⽆重复元素的数据结构
1 创建集合

s1 = set() #空集合 不能是{},这是字典
s2 = {1,2,3,4}
print(s1)
print(set([30,40,50])) #通过列表创建
print(set((11,22,33))) #通过元组创建
print(set('hello')) #通过字符串创建 
print(set({'name':'⼤宝','age':20})) #通过字典创建,得到⼀个键的集合
#注意:重复元素在set中会被⾃动过滤

2 集合操作

#1 增加
#add添加不可变元素
s1.add(5)
# s1.add([6,7]) #不能添加列表,列表和字典都是不可哈希的
s1.add((6,7)) #可以添加元组元素,元组是可哈希的
print(s1)
#set.update(s) s必须是可迭代的对象:列表、元组、字符串、字典
#update会把列表、元组、字符串打碎添加到集合中
s1 = {1,2,3,4}
s1.update([5,6])
s1.update((7,8))
s1.update('hello')
s1.update({'1':10,'2':20}) #将字典的键添加到s1
print(s1)
#2 删除
#set.remove(elem)
set3 = {1,2,3,4,5,6}
set3.remove(4) #直接删除指定元素
print(set3)
print(set3.pop()) #删除任意元素,并返回该元素的值
print(set3)
set3.discard(10) #删除的元素不存在,不会报错
#set3.remove(10) #如果元素不存在,则报错:KeyError
#3元素个数
print(len(set3))
#4 成员操作
print(2 in set3) #True
#5 并、交、差集
s1 = {1,2,3,4,5}
s2 = {3,4,5,6,7}
print(s1 | s2) #并
print(s1 & s2) #交集
print(s1 - s2) #差集

⼆、字典
字典属于⽆序序列,元素存放⽆序,是通过哈希⽅式进⾏数据存取的,字典是⼀个
可变容器,字典中保存⼀个个的键值对: key : value。我们通过key来获取对应的
值,很类似我们的汉语字典。

  • 字典中键必须是唯⼀的,必须是不可变类型
  • 字典查找速度⽐较快

2.1 字典的创建

d1 = {} #空字典
d1 = dict() #空字典
d2 = {'name':'麻辣⻰虾','taste':'美味'}
d3 = dict(a=1,b=2)
d4 = dict([('a', 1),('b', 2)])
d5 = dict({'a':1,'b':2})

2.2 字典操作

#存储多个学⽣的成绩
dict1 = {"jack":78,"hanmeimei":99,"lilei":60}
print(dict1)
#1.元素访问
#获取 语法:字典名[key]
print(dict1["hanmeimei"])
#print(dict1["tom"]) #KeyError: 'tom'
#字典名.get()
result = dict1.get("lilei",'1') # 如果没有lilei这个键,返回默认值1,不
会报错
print(result)
#2.添加:当指定的键不存在的时候,则表示添加
dict1["tom"] = 70
print(dict1)
#但是,如果键已经存在,则表示修改value
dict1["jack"] = 50
print(dict1)
#3. 删除 pop 删除并返回指定键对应的值
#注意:通过键,直接删除整个键值对
dict1.pop("jack")
print(dict1)
del dict1['lilei'] #删除键值对,不返回值
dict1.clear() #清空字典
del dict1 #删除整个字典
#4 字典合并
a = {1:'hello'}
b = {2:'world'}
a.update(b)
print(a)
#5.遍历
dict2 = {"jack":78,"hanmeimei":99,"lilei":60}
#⽅式⼀:只获取键
for key in dict2:
 value = dict2[key]
 print(key,value)
#⽅式⼆:只获取值
#values,得到的结果是⼀个列表,当做列表处理
print(dict2.values())
for value in dict2.values():
 print(value)
#⽅式三:同时获取键和值
#items,得到的结果是⼀个列表,列表中的元素是元组
print(dict2.items()) #[('jack', 78), ('hanmeimei', 99), ('lilei',
60)]
for key,value in dict2.items():
 print(key,value)
#⽅式四
for index,key in enumerate(dict2):
 value = dict2[key]
 print(index,key,value)
#6.获取键值对的个数
print(len(dict1))
#7.成员操作
d2 = {'name':'麻辣⻰虾','taste':'美味'}
print('name' in d2) #判断某个键是否在列表中

数据类型的转换
int(x) 将x转换为int类型
float(x) 将x转换成浮点型
str(x) 将x转换成字符串
bool(x) 转换成bool类型 的True False
dict(x) 将序列x转换成字典
list(x) 将序列x转换成列表
set(x) 将序列x转换成集合
tuple(x) 将序列x转换成元组
布尔值
在python中,能够解释为假的值有:None、0、0.0、False、所有的空容器(空列表、空元组、空字典、空集合、空字符串),其它是真
zip函数
zip() 函数⽤于将可迭代的对象作为参数,将对象中对应的元素打包成⼀个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不⼀致,则返回列表⻓度与最短的对象相同。
语法:zip(iterable1,iterable2, …)
参数说明:iterable – ⼀个或多个可迭代对象(字符串、列表、元祖、字典)

a = [1,2,3,4]
b = [2,3,4]
res = zip(a,b)
print(list(res)) #[(1, 2), (2, 3), (3, 4)]
#可以使⽤for-in 遍历
for x,y in zip(a,b):
 print(x,y)

你可能感兴趣的:(学习专栏)