day8元祖字典集合

tuple

  1. 什么是元祖(tuple)
    Python提供的容器型數(shù)據(jù)類型拣展,不可變,并且有序
    不可變 - 不支持增刪改佩微,只支持查
    有序 - 可以通過下標獲取元素(每個元素對應一個確定的下標)

  2. 字面量和元素
    (元素1九串,元素2,...)
    可以是任意數(shù)據(jù)類型冬阳,并且類型可以不一樣,同樣的元素可以有多個

point = (20,20)
print(point,type(point))
注意:

1.空的元祖

tuple2 = ()
print(type(tuple2))

2.只有一個元素的元祖-- 在元素后面加一個逗號5骋肝陪!

tuple2  = (100,)
print(tuple2,type(tuple2))

3.直接將多個元素用逗號隔開,不加小括號刑顺,表示的也是一個元祖

tuple3 = 12,25,25,25,36,4
print(tuple3,type(tuple3))
  1. 元祖獲取元素和列表是一樣的
tuple4 = ('南充','廣安','達州','廣元')
print(tuple4[1],tuple4[2])
獲取部分
print(tuple4[0:3])
print(tuple4[::])

直接遍歷

for city in tuple4:
    print(city)

通過下標遍歷

for index in range(len(tuple4)):
    print(tuple4[index])
index = 0
while index < len(tuple4):
    print(tuple4[index])
    index+=1

補充:特殊的獲取方式

  1. 變量1氯窍,變量2... = 元祖 -- >用前面的變量依次獲取元祖中元素的值 要求前面變量的個數(shù)和元祖的個數(shù)一致
point = (100,200)
x,y = point     #   x, y = 100,200
print(y,x)
  1. 變量1,變量2 = 元祖 -- 通過帶 的變量獲取元祖中剩余的部分

注意:這個結構中帶的變量只有一個蹲堂,不帶的變量可以有多個

name,*scores= ('小明',25,52,32,52)
print(name,*scores)
*scores,num = ('小明',25,52,32,52)
print(*scores,num)
*info,num1,num2 = ('小明',25,52,32,52)
print(*info,num1,num2)

補充:*的用法

nums = (1,2,3,4,56,7)
nums2 = [1,2,3,4,5]
print(*nums,*nums2)

4.相關運算(和列表一樣)*狼讨,+,in/not in len(),max(),min(),sum(),tuple()

tuple1 = (10,25,2)
tuple2 = (22,'dfsf',52)
print(tuple1 + tuple2,tuple1*2)
print('abc' in tuple1)
print('abc' not in tuple1)

5.排序
sorted(序列) - 對序列中的元素排序贯城,產(chǎn)生一個新的序列

注意:列表.sort() -- 修改原列表中的順序 sorted(列表) - 產(chǎn)生一個新的列表

tuple1 = (1,25,2,)
print(sorted(tuple1))

new_strs = sorted('sfadsfdsfadfadsf')
print(new_strs)
num = ''.join(new_strs)
print(num)

joio的使用
字符串.join(序列) - 將序列中的元素取出熊楼,用指定的字符串鏈接在一起。要求序列中的元素是字符串

new_strs = ''.join(['s','sd','sd'])
print(new_strs)

dict

  1. 什么是字典(dict)
    Python提供的容器型數(shù)據(jù)類型能犯,可變并且無序

可變 - 支持元素的增刪改
無序 - 不支持下標的操作

2.字面量和元素
用大括號括起來鲫骗,里面有多個鍵值對,每個鍵值對用逗號隔開踩晶,鍵值對就事字典的元素
鍵值對: 鍵/dey:值/value(鍵值對)- 鍵值對必須成對出現(xiàn)执泰;脫離字典是沒有意義的。

{ key1:value1,key2:value2,key3:value3...}

鍵 - 必須是不可變的渡蜻,而且是唯一的术吝。實際一般將字符串作為鍵
值 - 可以是任何數(shù)據(jù)類型

注意:字典存儲數(shù)據(jù) 實質(zhì)是通過值來存的,key是值對應的標簽和獲取值的方式茸苇。

dict1 = {}    #  空字典
dict1 = {'a':12,'b':25,(1,2):'afd'}    #  key是唯一的
print(dict1)

3.什么時候使用字典:多個沒有相同意義的數(shù)據(jù)(需要區(qū)分)排苍,就使用字典。例如:保存一個人的不同信息学密;
什么時候使用列表:存儲的多個數(shù)據(jù)是相同的數(shù)據(jù)淘衙,(相同意義的數(shù)據(jù)),不需要對不同的數(shù)據(jù)進行區(qū)分腻暮;例如:保存一個班的學生的成績

person = {'name':'xiaoming','age':18,'sex':'girl','height':165,'weight':56,'score':90}

練習 彤守; 聲明一個變量 保存一個班的學生信息(四個學生)毯侦,每個學生需要保存姓名、電話和年齡

students = [{'name':'小明','tel':564346,'age':30},{'name':'張三','tel':56421516,'age':15},
     {'name':'李四','tel':564343545,'age':15},
     {'name':'王五','tel':152156,'age':30}]

字典元素的增刪改查

  1. 查(獲取值)
    注意:字典中的鍵值對單獨拎出來你沒有任何意義

a. 字典[key] - 獲取字典中key對應的值
注意: 當key不存在的時候具垫,會報出keyError

car = {'color':'黃色','type':'跑車','price':500000}
print(car['color'])

b. 字典.get(key) - 獲取字典中key對應的值
注 意: 當key不存在的時候侈离,不會報錯,并會取到一個默認值:none
字典.get(key,值1) - 當key不存在的時候筝蚕,不會報錯 卦碾,并且取到對應的值1

print(car.get('type'))
print(car.get('speed'))
print(car.get('color','紅色'))
print(car.get('speed',0))

c. 遍歷字典
注意:直接通過for- in 遍歷字典取到的是key

dict1 = {'a':100,'b':300,'c':23}
遍歷字典取到的是key
for key in dict1:
    # key
    print(key,end='')
    # value
    print(dict1[key])

遍歷字典的values(),獲取所有值

for value in dict1.values():
    print(value)

遍歷字典的item(),直接獲取key和value(不建議使用)

for key,vlue in dict1.items():
    print(key,value)
  1. 增,改
    a.
    字典[key] = 值 - 當key不存在就是添加鍵值對,當key存時起宽,就是修改key對應的值
movie = {'name':'喜洋洋','type':'卡通','time':120}

添加

movie['score'] = 9.9
print(movie)

修改

movie['name'] = '喜洋洋與灰太狼'
print(movie)
  1. 刪(刪除鍵值對)
    a. del 字典[key] - 刪除字典中指定的key對應的鍵值對
    b. 字典.pop(key) - 取出字典中key對應的值
name = movie.pop('name')
print(movie,name)

練習:用一個字典保存一個學生的信息:{'name':'張三'蔗坯,'age':18,'score':85}
輸入修改的信息,例如:請輸入修改信息的:name - > 修改名字 abc -> 沒有該信息

dict1= {'name':'張三','age':18,'score':85}
num = input('請輸入修改信息:')
for key in dict1:
    if num == 'name':
        name1 = input('請輸入修改姓名:')
        dict1['name'] = name1
        print(dict1)
        break
    elif num == 'age':
        age2 = int(input('請輸入年齡:'))
        dict1['age'] = age2
        print(dict1)
        break
    elif num == 'score':
        score2 = int(input('請輸入成績:'))
        dict1['score'] = score2
        print(dict1)
        break
    else:
        print(input('沒有該信息'))

相關運算

1.比較運算
== 燎含,!=
注意:判斷兩個字典是否相等,只看鍵值對是否一樣腿短,不管鍵值對的順序
字典不支持 > < 符號

print({'a':1,'b':2} == {'b':2,'a':1})   #   相等  字典是無序的  為True

  1. in /not in
    key in 字典 判斷字典中指定的key是否存在
    key not in 字典 判斷字典中指定的key是否不存在
dict1 = {'a':1,'b':2}
print('a' in dict1)
print(1 in dict1)   #  False
  1. len(),max(),min()

dict(數(shù)據(jù)) - 要求是序列屏箍,并且序列的元素都是有兩個元素的子序列

獲取字典中鍵值對的個數(shù)

print(len(dict1))
print(max(dict1))  #  判斷所有key的最大值
print(min(dict1))   #  字典中key的最小值

將列表作轉(zhuǎn)為字典

print(dict([(1,2),[52,'sdd'],('sdf','s')]))

字典轉(zhuǎn)別的序列 都是將字典中的key取出,作為序列的元素

dict1 = {'a':1,'b':2}
print(list(dict1))
  1. 相關方法:

  2. 字典.clear() - 清空字典

注意:清空容器推薦使用clear 操作橘忱,而不是重新賦一個空的容器

dict1 = {'a':1,'b':2}

直接賦值赴魁,修改其中一個的元素,會影響另外一個

dict2 = dict1
dict1.clear()
print(dict1)
  1. 字典.copy() - 復制字典中的元素钝诚,產(chǎn)生一個新的字典
dict1 = {'a':1,'b':2}

拷貝賦值颖御,會產(chǎn)生新的地址,賦值后相互不影響

dict2 = dict1.copy()
dict2.clear()
print(dict1)
print(id(dict1),id(dict2))
  1. 字典.fromkeys(seq,value) -- 以序列中所有的元素作為key凝颇,指定的值作為value創(chuàng)建一個新的字典
new_dict = dict.fromkeys('adv',100)
print(new_dict)

字典.keys() -將字典所有的key取出產(chǎn)生一個新的序列
字典.values() - 將字典所有的values取出產(chǎn)生一個新的序列
字典.items() - 將字典所有的key 和 values取出產(chǎn)生一元祖取出產(chǎn)生一個新的序列

  1. 字典.setdefault(key,value = none)

字典.setdefault(key) - 當key存在的時候潘拱,添加鍵值對key:None
字典.setdefault(key,value) - 當key不存在的時候,添加鍵值對key:value
注意:這個操作當key存在的時候拧略,不會修改

dict1 = {'name':'xiaoming','color':'black','height':158}
dict1.setdefault('name2')
print(dict1)

字典1.update(字典2) - 使用字典2中的鍵值對去更新字典1芦岂,
如果字典2中的key在字典1中本來就存在就是修改,不存在添加

dict1 = {'name':'xiaoming','color':'black','height':158}
dict1.update({'height':120,'age':78})
print(dict1)

集合

  1. 什么是集合(set)
    可變的
    無序的垫蛆;元素是唯一的并且不可變

2.字面量
{元素1禽最,元素2...}

set1 = {1,0,2,2,2,52}   #
print(set1)         #   {0, 1, 2, 52}    元素是唯一的  可以去重

空集合

set2 = set()
print(set2)
  1. 增刪改查
set1 = {1,0,2,52}

  1. 集合不能單獨的獲取單個元素,只能一個一個的遍歷
for itme in set1:
    print(itme)

a.集合.add(元素) - 在集合中添加指定元素
b.集合.update(序列) - 將序列中的元素添加到集合中

set1 = {1,0,2,52}
set1.add('ssf')
print(set1)

set1.update({'aa':10,'sd':22})
print(set1)


集合.remove(元素) --- 刪除集合中指定的元素

set1 = {1,0,2,52}
set1.remove(2)
print(set1)

4.數(shù)學集合運算
交集(&):獲取兩個集合公共的元素產(chǎn)生一個新的集合
并集(|):將兩個集合中的元素合并在一起產(chǎn)生一個新的集合
差集(-):集合1-集合2:去掉集合1中包含集合2的部分袱饭,剩下的產(chǎn)生一個新的集合
補集(^):將兩個集合合并在一起起去掉公共部分川无,剩下的部分產(chǎn)生一個新的集合
子集的判斷:集合1>集合2, - > 判斷集合1是否包含集合2 集合1<集合2 -- > 判斷集合1是否包含集合2

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市虑乖,隨后出現(xiàn)的幾起案子懦趋,更是在濱河造成了極大的恐慌,老刑警劉巖决左,帶你破解...
    沈念sama閱讀 212,029評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件愕够,死亡現(xiàn)場離奇詭異走贪,居然都是意外死亡,警方通過查閱死者的電腦和手機惑芭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評論 3 385
  • 文/潘曉璐 我一進店門坠狡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人遂跟,你說我怎么就攤上這事逃沿。” “怎么了幻锁?”我有些...
    開封第一講書人閱讀 157,570評論 0 348
  • 文/不壞的土叔 我叫張陵凯亮,是天一觀的道長。 經(jīng)常有香客問我哄尔,道長假消,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,535評論 1 284
  • 正文 為了忘掉前任岭接,我火速辦了婚禮富拗,結果婚禮上,老公的妹妹穿的比我還像新娘鸣戴。我一直安慰自己啃沪,他們只是感情好,可當我...
    茶點故事閱讀 65,650評論 6 386
  • 文/花漫 我一把揭開白布窄锅。 她就那樣靜靜地躺著创千,像睡著了一般。 火紅的嫁衣襯著肌膚如雪入偷。 梳的紋絲不亂的頭發(fā)上追驴,一...
    開封第一講書人閱讀 49,850評論 1 290
  • 那天,我揣著相機與錄音疏之,去河邊找鬼氯檐。 笑死,一個胖子當著我的面吹牛体捏,可吹牛的內(nèi)容都是我干的冠摄。 我是一名探鬼主播,決...
    沈念sama閱讀 39,006評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼几缭,長吁一口氣:“原來是場噩夢啊……” “哼河泳!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起年栓,我...
    開封第一講書人閱讀 37,747評論 0 268
  • 序言:老撾萬榮一對情侶失蹤拆挥,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體纸兔,經(jīng)...
    沈念sama閱讀 44,207評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡惰瓜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,536評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了汉矿。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片崎坊。...
    茶點故事閱讀 38,683評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖洲拇,靈堂內(nèi)的尸體忽然破棺而出奈揍,到底是詐尸還是另有隱情,我是刑警寧澤赋续,帶...
    沈念sama閱讀 34,342評論 4 330
  • 正文 年R本政府宣布痊远,位于F島的核電站晰筛,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏缤弦。R本人自食惡果不足惜续室,卻給世界環(huán)境...
    茶點故事閱讀 39,964評論 3 315
  • 文/蒙蒙 一晰韵、第九天 我趴在偏房一處隱蔽的房頂上張望炭菌。 院中可真熱鬧铺浇,春花似錦、人聲如沸敛熬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽应民。三九已至,卻和暖如春夕吻,著一層夾襖步出監(jiān)牢的瞬間诲锹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評論 1 266
  • 我被黑心中介騙來泰國打工涉馅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留归园,地道東北人。 一個月前我還...
    沈念sama閱讀 46,401評論 2 360
  • 正文 我出身青樓稚矿,卻偏偏與公主長得像庸诱,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子晤揣,可洞房花燭夜當晚...
    茶點故事閱讀 43,566評論 2 349

推薦閱讀更多精彩內(nèi)容