字典、元组、集合
字典
就类似于“新华字典” 拼音与字一一对应,不过它存储的时候是无序的,因为用了hash处理了key的位置
创建
dict1 = {'齐天大圣':'孙悟空','净坛使者':'猪八戒'}
dict2 = dict('齐天大圣':'孙悟空','净坛使者':'猪八戒')
获取数据
[]
print(scores['齐天大圣'])
print(scores['白龙马'])//字典里没有,会返回Error
get()
print(scores.get('齐天大圣'))
print(scores.get['白龙马'])//字典里没有,会返回None,可以将None改成其他值,如下
print(scores.get['白龙马',999])//字典里没有,会返回999
特点
字典会占用大量空间,key唯一,value可重复
判断是否在字典里
print('齐天大圣' in dict1)
删除
del dict1['齐天大圣']
新增
dict1['三师弟']='沙悟净'
修改
dict1['三师弟']='沙悟净(已黑化)' //对已有的会覆盖
获得所有的键、值、键值对
keys=dict1.keys()
values=dict1.values()
items=dict1.items()
list_items=list(items) //元组
字典的遍历
for item in dict1
print(item)
字典生成式
items = ['Fruits','Books','Others']
prices = [96,78,85]
//最终变成:['Fruits':96,'Books':78,,'Others':8]
dict3 = {item:price for item,price in zip(item,prices)}
元组
可变序列:列表、字典、集合
不可变序列:字符串、元组,就是不能对原物件进行增删改的东西。
创建
()
tuple1 = ('Python','World',99) //这个方法的()可以省略
tuple1 = 'Python','World',99 //因此,若只有一个元素却要与str区分开时,需要加','
内置函数tuple()
tuple1 = tuple(('Python','World',99))
遍历
tuple1 = tuple(('Python','World',99))
for item in tuple1:
print(item)
元组
列表可以随便增减,但是元组不可,它是不可改变的
元组只能用count和index
1.定义一个元组
#一般定义:
>>> tuple1 = (1,2,3,4,5,6,7,8)
>>> tuple1[1]
2
#元组中只有一个元素时,注意要逗号
>>> 8*(8,)
(8, 8, 8, 8, 8, 8, 8, 8)
2.复制一个元组
>>> tuple2 = tuple1
>>> tuple2
(1, 2, 3, 4, 5, 6, 7, 8)
3.对元组切片
>>> temp2 = ('aaa','bbb','ccc')
>>> #更新和删除一个元组
>>> temp2 = temp2[:2]+('ddd',)+temp2[:2]
>>> temp2
('aaa', 'bbb', 'ddd', 'aaa', 'bbb')
4.删除元组
>>> del temp1
集合
只有key,没有value的字典;当然,集合内元素具有唯一性。
创建
{}
set1 = {'Python','World',99}
set()
set1 = set{'Python','World',99}
set2 = set(range(6))
以下可以把列表、元组中的元素通通拿出来,放到集合里
set([1,2,34,56,7])
set((1,2,34,5,6))
定义一个空集合
set0 = {} //错误的,这会得到一个空字典
set0 = set() // √
增
单个
set1.add(80)
多个
set1.update({80,90,100})
set1.update([80,90,100])
set1.update((80,90,100))
删
set1.remove(80)//删除一个,但若无会报错
set1.discard(80) //删除一个,不会报错
set1.pop()//删除集合的第一个的元素,不可添加参数,即不可指定
set1.clear()
集合间的关系判断
- 相等: == !=
- 子集:
print(set2.issubset(set1))
- 超集:
print(set2.issuperset(set1))
- 是否没有交集:
print(set2.isdisjoint(set1))
集合间的关系操作
- 交集:
print(set2.intersection(set1))
print(set1 & set2 )
- 并集:
print(set2.union(set1))
print(set1 | set2 )
- 差:
print(set2.difference(set1))
print(set1 - set2 )
- 对称差:(去掉差后两边剩下的)
print(set2.symmetric_difference(set1))
print(set1 ^ set2 )
集合生成式
set1 = { i*i for i in range(1,10)}
把{}改成[] 就是列表生成式。
注:没有元组生成式。
---------------------------
“朝着一个既定的方向去努力,就算没有天赋,在时间的积累下应该也能稍稍有点成就吧。”