天天看點

《python從入門到項目實踐》第10章 字典與集合 zip() set()

目錄

字典 

通路對應鍵的值   dictionary.items()

添加、修改、删除字典元素

字典推導式,快速生成字典

 集合

可以使用set函數建立集合

集合的添加和删除

集合的交集、并集與差集的運算(&   |   -)

清單、元組、字典、集合的對比

字典 

任意對象的無序集合 

dictionary = {'key1':'value1', 'key2':'value2', 'key3':'value3',......}

 字典裡key 唯一,且不可變的

value不唯一

dictionary={}  #空字典

dictionary = dict(zip(list1,list2)) #清單建立字典

zip():将多個清單或者元組對應位置的元素組為元組,,可以用list()函數将其轉為清單

name = ['鄧肯','吉諾比利','帕克']        # 作為鍵的清單
sign = ['石佛','妖刀','跑車']            # 作為值的清單
dictionary = dict(zip(name,sign))      # 轉換為字典
print(dictionary)                        # 輸出轉換後字典
           
{'鄧肯': '石佛', '吉諾比利': '妖刀', '帕克': '跑車'}
 dictionary = dict(key1=value1,key2=value2,key3=value3,..... )  # 建立字典
 dictionary = dict.fromkeys(list1)   # 建立值為空的字典
name_list = ['鄧肯','吉諾比利','帕克']       # 作為鍵的清單
dictionary = dict.fromkeys(name_list)
print(dictionary)
           
{'鄧肯': None, '吉諾比利': None, '帕克': None}

元組作為鍵,清單作為值

name_tuple = ('鄧肯','吉諾比利', '帕克')       # 作為鍵的元組
sign = ['石佛','妖刀' ]    # 作為值的清單
dict1 = {name_tuple:sign}                       # 建立字典
print(dict1)
           
{('鄧肯', '吉諾比利', '帕克'): ['石佛', '妖刀']}

dict1 = {list1, list2} 會報錯 

dictionary.clear() 清空字典

通路對應鍵的值   dictionary.items()

dictionary.get(key,[default])

default 指定鍵不存在傳回的值,預設None

周遊字典

 dictionary.items()
dictionary = {'qq':'84978981','明日科技':'84978982','無語':'0431-84978981'}
for item in dictionary.items():
    print(item)
           

('qq', '84978981')

('明日科技', '84978982')

('無語', '0431-84978981')

dictionary = {'qq':'4006751066','明日科技':'0431-84978982','無語':'0431-84978981'}
for key,value in dictionary.items():
    print(key,"的聯系電話是",value)
           

qq 的聯系電話是 4006751066

明日科技 的聯系電話是 0431-84978982

無語 的聯系電話是 0431-84978981

添加、修改、删除字典元素

dictionary =dict((('鄧肯', '石佛'),('吉諾比利','妖刀'), ('帕克','跑車')))
dictionary["羅賓遜"] = "海軍上将"   # 添加一個元素
print(dictionary)
           
{'鄧肯': '石佛', '吉諾比利': '妖刀', '帕克': '跑車', '羅賓遜': '海軍上将'} #添加
dictionary =dict((('鄧肯', '石佛'),('吉諾比利','妖刀'), ('帕克','跑車')))
dictionary["帕克"] = "法國跑車"   # 添加一個元素,當元素存在時,則相當于修改功能
print(dictionary)
           
{'鄧肯': '石佛', '吉諾比利': '妖刀', '帕克': '法國跑車'}  #修改
dictionary =dict((('鄧肯', '石佛'),('吉諾比利','妖刀'), ('帕克','跑車')))
del dictionary["帕克"]    # 删除一個元素
print(dictionary)
           
{'鄧肯': '石佛', '吉諾比利': '妖刀'}        # 删除一個元素del 直接就沒了

字典推導式,快速生成字典

import random                                  #導入random标準庫
randomdict = {i:random.randint(10,100) for i in range(1,5)}
print("生成的字典為:",randomdict)
           
生成的字典為: {1: 92, 2: 53, 3: 70, 4: 84}

 集合

也是無序的

set1 = {1, 2, 3, 7, 8}  #集合

可以使用set函數建立集合

setname = set(iteration)

iteration : 表示要轉化為集合的可疊代對象

如果有重複元素,隻保留一個

建立空集合 隻能用 set()  不能是{}  這表示空字典

集合的添加和删除

add()

setname.add(element)
mr = set(['零基礎學Java','零基礎學Android','零基礎學C語言','零基礎學C#','零基礎學PHP'])
mr.add('零基礎學Python')  # 添加一個元素
print(mr)
           
{'零基礎學C語言', '零基礎學Android', '零基礎學PHP', '零基礎學Python', '零基礎學C#', '零基礎學Java'}

 删除 remove pop clear

mr = set(['零基礎學Java','零基礎學Android','零基礎學C語言','零基礎學C#','零基礎學PHP','零基礎學Python'])
mr.remove('零基礎學Python')                    # 移除指定元素
print('使用remove()方法移除指定元素後:',mr)
mr.pop()                                        # 删除一個元素
print('使用pop()方法移除一個元素後:',mr)
mr.clear()                                      # 清空集合
print('使用clear()方法清空集合後:',mr)
           

使用remove()方法移除指定元素後: {'零基礎學C語言', '零基礎學C#', '零基礎學PHP', '零基礎學Java', '零基礎學Android'}

使用pop()方法移除一個元素後: {'零基礎學C#', '零基礎學PHP', '零基礎學Java', '零基礎學Android'}

使用clear()方法清空集合後: set()

remove 指定的元素不存在将抛出異常

集合的交集、并集與差集的運算(&   |   -)

pf = set(['鄧肯','加内特','馬龍'])       # 儲存大前鋒位置的球員名字
print('大前鋒位置的球員有:',pf,'\n')      # 輸出大前鋒的球員名字
cf = set(['鄧肯','奧尼爾','姚明'])       # 儲存中鋒位置的球員名字
print('中鋒位置的球員有:', cf,'\n')      # 輸出中鋒的球員名字
print('交集運算:', pf & cf)      # 輸出既是大前鋒又是中鋒的球員名字
print('并集運算:', pf | cf)     # 輸出大前鋒和中鋒的全部球員名字
print('差集運算:', pf - cf)     # 輸出是大前鋒但不是中鋒的球員名字
           

大前鋒位置的球員有: {'馬龍', '加内特', '鄧肯'} 

中鋒位置的球員有: {'鄧肯', '姚明', '奧尼爾'} 

交集運算: {'鄧肯'}

并集運算: {'加内特', '姚明', '奧尼爾', '馬龍', '鄧肯'}

差集運算: {'馬龍', '加内特'}

清單、元組、字典、集合的對比

資料結構 是否可變 是否重複 是否有序 定義符号
清單 可變 可重複 有序 [ ]
元組 不可變 可重複 有序 ( )
字典 可變 可重複 無序 {key:value}
集合 可變 不可重複 無序 { }