2018-08-28 Day7-容器02-字典和集合

字典和集合

一、字典--dict

字典:容器類型午磁,以鍵值對作為元素。(字典里面存的數(shù)據(jù)全是以鍵值對出現(xiàn)的)

字典是可變的(增刪改)--- 指字典中的鍵值對的值和個數(shù)是可變的

  • 鍵值對 --> 鍵:值(key:value)
    {key1:value1,key2:value2痒钝,...}
    注意:
    key--必須唯一,不可變的(數(shù)字痢毒、布爾送矩、字符串、元組哪替,推薦使用字符串)
    值 -- 沒有要求
1栋荸、聲明字典

dict1 = {1:100, 'a':97, True:'布爾', (10,11):'start'}

2、獲取字典的元素對應(yīng)的值(字典存數(shù)據(jù)實(shí)質(zhì)是存值凭舶,key是獲取value的手段)
person = {'name':'星辰','age':20}
print(person['name'])

通過 key 獲取 value 時(shí)晌块,如果key不存在會發(fā)生keyError異常

- dict['key'] 和 dict.get('key') 方法使用區(qū)別

person = {'name':'星辰','age':20}
print(person['name'])
#下面兩種方式結(jié)果相同
print(person.get('age'))
print(person['age'])     
#下面兩種方式結(jié)果不同
print(person.get('sex'))     #如果key不存在返回None
print(person['sex'])   #報(bào)錯

使用情況總結(jié):
1、確定key肯定存在帅霜,用 dict[] 語法獲取 value 匆背;
2、key值可能不存在义屏,不存在的時(shí)候不希望報(bào)錯靠汁,而是對它進(jìn)行特殊處理,使用dict.get('key')方法

3闽铐、遍歷字典

遍歷字典直接取到的是字典所有 key 值

person = {'name':'星辰','age':20}
for key in person:
  print(key)
  print(person[key])
  print()

name
星辰

age
20
4蝶怔、改(修改key對應(yīng)的value)

語法:dict[key] = 新值

5、增(添加鍵值對)

增加語法和修改語法一樣兄墅,如果存在即為修改踢星,不存在即為增加。
語法:dict[key] = 值

5隙咸、刪(刪除鍵值對)

語法:
(1)沐悦、del dict [key]
(2)、dict.pop(key)--- 與列表類似五督,將值取出來保存,不是鍵值對藏否。

6、運(yùn)算符 -- in 充包、not in

不支持 ' + ' 和 ' * ' 操作
查找 值 在不在字典中

7副签、一些關(guān)于字典的方法
字典相關(guān)函數(shù).png

說明:

  • dict.copy():拷貝字典中所有元素遥椿,放在一個新的字典中(淺拷貝--見Day6)。
  • dict.fromkeys(序列淆储,默認(rèn)值=None): 將序列中的每個值作為key冠场,默認(rèn)值為value創(chuàng)建一個新的字典
dict = {}
dict = dict.fromkeys('abcd',111)
print(dict)

{'a': 111, 'b': 111, 'c': 111, 'd': 111}
  • dict.setdefault(key,default=None):添加鍵值對,默認(rèn)為None本砰,不能修改碴裙。
  • dict1.update(dict2):將dict2的鍵值對更新(添加)到dict1中:(1)如果dict2中的key在dict1中存在,就用key2對應(yīng)的值更新key1的值(2)不存在就添加点额。
8舔株、字典和列表的組合使用--重點(diǎn)

列表和字典選擇:
列表--保存數(shù)據(jù)是一個類型。
字典--保存數(shù)據(jù)類型不同咖楣。

應(yīng)用:學(xué)生管理系統(tǒng)
a督笆、一個系統(tǒng)可以存儲多個學(xué)生
b芦昔、一個學(xué)生可以存儲:姓名诱贿,電話,籍貫咕缎,專業(yè)等
c珠十、添加、刪除凭豪、修改學(xué)生信息

#1焙蹭、列表中有字典
student_system = [ {'name':'stu1', 'age':18, 'tel':110},
                   {'name':'stu2', 'age':19, 'tel':120},
                   {'name':'stu3', 'age':20, 'tel':130}]
#取出第一個學(xué)生的籍貫
print(student_system[0]['name'])

#2、字典中有列表
py_class = {
    'class_name':'python1806',
    'student':[{'name':'stu1', 'age':18, 'tel':110},
               {'name':'stu2', 'age':19, 'tel':120},
               {'name':'stu3', 'age':20, 'tel':130}
    ],
}
#取班級名
print(py_class['class_name'])
#取第三個學(xué)生的名字
print(py_class['student'][2]['name'])

python1806
stu3

擴(kuò)展:

# 練習(xí)1:在班級python1806添加一個學(xué)生嫂伞,要學(xué)生自己輸入信息:名字孔厉,年齡,id
name = input('請輸入您的名字:')
age = int(input('輸入您的年齡:'))
id = input('請輸入您的id:')
student = {'name':name, 'age':age, 'id':id}
class_python1806 = [{'name':'stu1', 'age':18, 'tel':110},
                    {'name':'stu2', 'age':19, 'tel':120},
                    {'name':'stu3', 'age':20, 'tel':130}
                     ]
class_python1806.append(student)
print(class_python1806)

#練習(xí)2:輸入一個學(xué)生的姓名帖努,根據(jù)姓名取刪除對應(yīng)的學(xué)生
name_del = input('輸入您要刪除的學(xué)生姓名:')
for i in range(len(class_python1806)):
    if class_python1806[i]['name'] == name_del:
        del class_python1806[i]
print(class_python1806)

結(jié)果:
請輸入您的名字:111
輸入您的年齡:11
請輸入您的id:11
[{'name': 'stu1', 'age': 18, 'tel': 110}, {'name': 'stu2', 'age': 19, 'tel': 120}, {'name': 'stu3', 'age': 20, 'tel': 130}, {'name': '111', 'age': 11, 'id': '11'}]
輸入您要刪除的學(xué)生姓名:111
[{'name': 'stu1', 'age': 18, 'tel': 110}, {'name': 'stu2', 'age': 19, 'tel': 120}, {'name': 'stu3', 'age': 20, 'tel': 130}]

二撰豺、集合 -- set

集合是python中的一種容器類型:無序的,可變的拼余,值唯一

1污桦、聲明一個集合

set1 = {1, 'abc'}
將其他序列轉(zhuǎn)換為集合,自動去重
set2 = set('name name') --> {'n', 'a', ' ', 'e', 'm'}
一般容器類型都不能放入集合匙监,比如列表凡橱,字典等

2、查(獲取集合中的元素)

集合是不能直接單獨(dú)獲取其中某一個元素的亭姥。
只能遍歷獲取每一個元素

3稼钩、增

a、set.add(元素)
b达罗、set1.update(set2) -- 將set2元素添加到set1中

4坝撑、刪

set.remove(元素)
set.clear() --- 全刪

5、數(shù)學(xué)相關(guān)的集合運(yùn)算 --- 重點(diǎn)
  • 判斷包含情況:
    集合1 >= 集合2:判斷集合1中是否包含集合2
  • 求并集:|
set1 = {1, 2, 3, 4, 5, 6}
set2 = {1, 2, 3, 8, 9}
print(set1 | set2)

{1, 2, 3, 4, 5, 6, 8, 9}
  • 求交集:&
set1 = {1, 2, 3, 4, 5, 6}
set2 = {1, 2, 3, 8, 9}
print(set1 & set2)

{1, 2, 3}
  • 求差集:-
set1 = {1, 2, 3, 4, 5, 6}
set2 = {1, 2, 3, 8, 9}
print(set1 & set2)

{4, 5, 6}
  • 求補(bǔ)集:^
set1 = {1, 2, 3, 4, 5, 6}
set2 = {1, 2, 3, 8, 9}
print(set1 ^ set2)

{4, 5, 6, 8, 9}

補(bǔ)充:

sum():python中對序列求和的方法
dir():可以查找一些內(nèi)置函數(shù)
isinstance(a, b):比較a、b類型是否相同绍载,返回True和False
isinstance(a, 類型):判斷a是否為一個類型
str.split():把字符串以空格分開诡宗,返回一個列表
re.sub('[要替換的字符]', '新字符',字符串)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市击儡,隨后出現(xiàn)的幾起案子塔沃,更是在濱河造成了極大的恐慌,老刑警劉巖阳谍,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蛀柴,死亡現(xiàn)場離奇詭異,居然都是意外死亡矫夯,警方通過查閱死者的電腦和手機(jī)鸽疾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來训貌,“玉大人制肮,你說我怎么就攤上這事〉莼Γ” “怎么了豺鼻?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長款慨。 經(jīng)常有香客問我儒飒,道長,這世上最難降的妖魔是什么檩奠? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任桩了,我火速辦了婚禮,結(jié)果婚禮上埠戳,老公的妹妹穿的比我還像新娘井誉。我一直安慰自己,他們只是感情好乞而,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布送悔。 她就那樣靜靜地躺著,像睡著了一般爪模。 火紅的嫁衣襯著肌膚如雪欠啤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天屋灌,我揣著相機(jī)與錄音洁段,去河邊找鬼。 笑死共郭,一個胖子當(dāng)著我的面吹牛祠丝,可吹牛的內(nèi)容都是我干的疾呻。 我是一名探鬼主播,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼写半,長吁一口氣:“原來是場噩夢啊……” “哼岸蜗!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起叠蝇,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤璃岳,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后悔捶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體铃慷,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年蜕该,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了犁柜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡堂淡,死狀恐怖馋缅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情淤齐,我是刑警寧澤股囊,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布袜匿,位于F島的核電站更啄,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏居灯。R本人自食惡果不足惜祭务,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望怪嫌。 院中可真熱鬧义锥,春花似錦、人聲如沸岩灭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽噪径。三九已至柱恤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間找爱,已是汗流浹背梗顺。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留车摄,地道東北人寺谤。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓仑鸥,卻偏偏與公主長得像,于是被迫代替她去往敵國和親变屁。 傳聞我的和親對象是個殘疾皇子眼俊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評論 2 359

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