2018-08-28 day7 dict和set

字典

聲明字典
  • 字典是容器類型,也是序列绩鸣。以鍵值對作為元素(key-value)。
  • 鍵值對: key:value ,鍵必須唯一且不可改變(數(shù)值纱兑、布爾呀闻、字符串和元組);通常使用字符串潜慎;若定義了相同的key時(shí)捡多,它會(huì)按照后一個(gè)出現(xiàn)的值為準(zhǔn)蓖康;值可以不唯一,可以是任何類型的數(shù)據(jù)
  • 使用{ }表示
  • 字典是可變的(元素可變)
dict1 = {'hero':'lucian', 2:'oneplus', True:'True',(10,20):'坐標(biāo)(10,20)'}
print(dict1)

result:
{'hero': 'lucian', 2: 'oneplus', True: 'True', (10, 20): '坐標(biāo)(10,20)'}
獲取字典的元素對應(yīng)的值
  • 字典存數(shù)據(jù)垒手,實(shí)質(zhì)存的value蒜焊,key是獲取value的手段
  • dict_name[key] -- 通過key獲取值,若key不存在時(shí)返回KeyError
print(dict_list['name'],dict_list['medicine'])

result:
shiting wang yuting
  • dict_name.get(key) -- 通過key獲取值,若key不存在返回None,代表沒有
print(dict_list.get('a'))

result:
None

:key肯定存在時(shí)用[],可能不存在或不希望返回錯(cuò)誤時(shí)用get

字典遍歷
  • 遍歷字典直接取到字典的key值
for k in person:
    print(k,person[k])
for k,v in person.items():
    print(k,v)

result:
name 某寶
age 10
boss 某云
sex 男
name 某寶
age 10
boss 某云
sex 男
修改元素
  • 語法 dict_name[key] = value
person['sex'] = '女'
print(person)
增加元素
  • dict_name[new_key] = value
del person['age']
刪除元素
  • del dict_name[key]
a = person.pop('boss') #a保存的是刪除key對應(yīng)的value

字典相關(guān)計(jì)算

  • 字典不支持 + 和 *
  • in 和 not in -- 判斷key在字典中是否存在
  • len(dict_name) 獲取字典中元素的數(shù)量
  • dict_name.clear() 刪除字典中所有的元素
  • dict_name.copy() 復(fù)制字典中的鍵值對到新的字典科贬,屬于淺拷貝
computer1 = computers #復(fù)制computers的地址給computer1
computer2 = computers.copy() #復(fù)制computers的全部元素到一個(gè)新的內(nèi)存空間中泳梆,并且將新的地址給computer2
  • copy.deepcopy(dict_name) 需先導(dǎo)入copy模塊,屬于深拷貝
  • dict.fromkeys(seq, Default = None) 將列表轉(zhuǎn)換字典,將序列seq中每個(gè)值作為key榜掌,默認(rèn)值為value創(chuàng)建一個(gè)新的字典.默認(rèn)值不寫時(shí)為None
print(dict.fromkeys(computers,12))
  • 獲取字典項(xiàng)
# dict_name.keys() 獲取字典中的所有key优妙,返回dict_keys類型
print(type(computers.keys()),computers.keys())
# dict_name.values() 獲取字典中所有key對應(yīng)的value,返回dict_values類型
print(type(computers.values()),computers.values())
# dict_name.items() 獲取字典所有的元憎账,返回dict_items類型套硼。
print(type(computers.items()),computers.items())
# 不推薦使用,遍歷數(shù)據(jù)時(shí)會(huì)轉(zhuǎn)換數(shù)據(jù)胞皱,占用更大的資源邪意。

result:
<class 'dict_keys'> dict_keys(['brand', 'color'])
<class 'dict_values'> dict_values(['聯(lián)想', 'white'])
<class 'dict_items'> dict_items([('brand', '聯(lián)想'), ('color', 'white')])
  • dict_name.setdefault(key, Default=None) 給字典添加鍵值對,如果鍵值對存在,就不作處理
computers.setdefault('value','nice')
  • dict1.update(dict2) 將字典2的鍵值對更新到字典1中朴恳,如果字典2的鍵值對在字典1中存在,就更新對應(yīng)鍵的值
dict1 = {'age':10,'name':'007'}
dict2 = {'num':10,'name':'king'}
print('before updating: ',dict1)
dict1.update(dict2)

result:
{'brand': '聯(lián)想', 'color': 'white', 'value': 'nice'}
before updating:  {'age': 10, 'name': '007'}
updated:  {'age': 10, 'name': 'king', 'num': 10}


list和dict的組合

  • 數(shù)據(jù)保存多個(gè)數(shù)據(jù)的類型是同一種類型允蚣,使用列表
    保存多個(gè)學(xué)生的信息 students_info = [{}, {}, {}...]
  • 數(shù)據(jù)保存多個(gè)數(shù)據(jù)的類型不同于颖,使用字典
    如保存
student_info = [
    {'name':'lucian','age':10},
    {'name':'lax','age':12},
    {'name':'gaylun','age':14}
]

py_class = {
    'class_name':'python1806',
    'students':student_info,
    'location':'2_classroom'
}
  • 輸入一名學(xué)生的姓名,根據(jù)姓名刪除對應(yīng)的學(xué)生
name = input('輸入姓名:')
for item in py_class['students'][:]:
    if item['name'] == name:
        py_class['students'].remove(item)
        print('已刪除' )
        print(py_class)

集合set

集合在python中是一種無序的可變且值唯一的容器類型

  • 聲明集合
set1 = {1,3,'a',(1,2),True}
print(set1,type(set1))
set2 = set('dongdongqiang')
print(set2)

# 將其他的序列轉(zhuǎn)換成集合嚷兔,自帶一個(gè)去重的功能
#定義空集合必須 set1 = set()
result:
{(1, 2), 1, 3, 'a'} <class 'set'>
{'g', 'q', 'n', 'o', 'i', 'd', 'a'}
  • 集合不能單獨(dú)獲取其中的某一個(gè)元素的,只能通過遍歷獲取集合的元素
for item in set1:
    print(item)

result:
(1, 2)
1
3
a
  • 添加元素
    • set_name.add(obj)
    set1.remove('old')
    print(set1)
    
    result:
    {(1, 2), 1, 3, 'goods', 'a'}
    
    • set1.update(set2)
    set1.update({'new','old'})
    print(set1)
    
    result:
    {(1, 2), 1, 'new', 3, 'goods', 'old', 'a'}
    
  • 刪除元素
    • set_name.remove(obj) 刪除集合中指定的元素
    set1.remove('old')
    print(set1)
    
    result:
    {(1, 2), 1, 'new', 3, 'goods', 'a'}
    
    • set_name.clear() 刪除整個(gè)集合的元素
    • del set_name 刪除集合
  • 集合中不能修改元素
  • 數(shù)學(xué)相關(guān)運(yùn)算
# a.判斷包含情況
'''
集合1 >= 集合2 判斷集合2是集合1的子集
集合1 <= 集合2 判斷集合1是集合2的子集
'''
# b.求交并補(bǔ)
'''
并集:集合1 | 集合2 求兩個(gè)集合的全部部分
交集:集合1 & 交集2 求兩個(gè)集合公共部分
補(bǔ)集:集合1 ^ 集合2 求兩個(gè)集合除公共部分以外的部分
'''
# c.差集
'''
集合1 - 集合2  集合1對于集合2沒有的部分
'''
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末森渐,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子冒晰,更是在濱河造成了極大的恐慌同衣,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件壶运,死亡現(xiàn)場離奇詭異耐齐,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)蒋情,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門埠况,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人棵癣,你說我怎么就攤上這事辕翰。” “怎么了狈谊?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵喜命,是天一觀的道長沟沙。 經(jīng)常有香客問我,道長壁榕,這世上最難降的妖魔是什么矛紫? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮护桦,結(jié)果婚禮上含衔,老公的妹妹穿的比我還像新娘。我一直安慰自己二庵,他們只是感情好贪染,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著催享,像睡著了一般杭隙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上因妙,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天痰憎,我揣著相機(jī)與錄音,去河邊找鬼攀涵。 笑死铣耘,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的以故。 我是一名探鬼主播蜗细,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼怒详!你這毒婦竟也來了炉媒?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤昆烁,失蹤者是張志新(化名)和其女友劉穎吊骤,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體静尼,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡白粉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鼠渺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蜗元。...
    茶點(diǎn)故事閱讀 39,981評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡盆佣,死狀恐怖刘急,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情扁达,我是刑警寧澤掌敬,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布惯豆,位于F島的核電站池磁,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏楷兽。R本人自食惡果不足惜地熄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望芯杀。 院中可真熱鬧端考,春花似錦、人聲如沸揭厚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽筛圆。三九已至裂明,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間太援,已是汗流浹背闽晦。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留提岔,地道東北人仙蛉。 一個(gè)月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像碱蒙,于是被迫代替她去往敵國和親荠瘪。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評論 2 355