字典、元组、集合

字典

就类似于“新华字典” 拼音与字一一对应,不过它存储的时候是无序的,因为用了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)}

把{}改成[] 就是列表生成式。

注:没有元组生成式。

posted @ 2022-07-28 10:03  Dinesaw  阅读(28)  评论(0编辑  收藏  举报