字典和集合

2021-09-13 23:56:41 字數 3762 閱讀 4884

字典 dict

字典 dict是一種無序的可變容器,序列的索引對它失效,它的索引是自定義的

形式:d = {}

d =

d = dict(a=1,b=2)

d = dict([(『name』,『libai』),(『age』,30)])

d = dict.fromkeys(迭代物件) 將乙個迭代物件的每個元素作為鍵,值預設全部為none

字典方法

例: d = 

d1 =

增 改

d[鍵] = 值 : 如果鍵不存在則新增元素,如果鍵存在為修改

d['score'] = 100 d['name'] = 'dufu'

d.setdefault(鍵,值) : 如果鍵不存在則新增此元素,並且返回"值"。如果鍵存在則不做修改,並且返回相應字典中的"值"

d.update(d1) : 將兩個字典合併,d1不變,d要根據d1進行修改

刪 del() : 通用刪除方法 del(d1) del(d['name']) 只會返回none

d.clear() : 將乙個字典清空

d.pop(鍵) : 根據索引進行刪除元素,並且會返回元素的值

d.popitem() : 隨機彈出乙個元素,返回 (鍵,值)

查 d['name'] : 根據索引進行查詢,如果存在則返回值,如果不存在則報錯

d.get(鍵,[預設值]) : 查詢對應鍵的值,如果存在則返回相應值,如果不存在則返回預設值 (預設值預設為none)

d.keys() : 獲得字典中所有的鍵,可以將結果變成列表或元組後使用

d.values() : 獲得字典中所有的值,可以將結果變成列表或元組後使用

d.items() : 將乙個字典變成列表的形式 dict_items([('name', 'dufu'), ('score', 100)])

其它方法:

d.copy() : 深拷貝

字典的特性

雜湊運算 雜湊演算法

哈然是一種單向演算法,並且不可逆

常見 : md5 sha1 sha256 sha512

對不同的值進行同樣的hash運算可能會得到相同的值,我們稱之為碰撞。如果發生了碰撞,說明這個hash演算法就不安全。

只有sha512沒有發生過碰撞

字典中的值可以是任意型別的資料

字典中的鍵必須為不可變型別,即不可為列表字典

因為字典對元素中的鍵做了hash運算,這個可以大大提高字典的速度。hash運算不能計算可變型別

如果資料量很大字典會比列表快很多。

練習:

參考:

#輸入ip、訪問次數、流量、等待時間

#用字典的方式構建

'''輸入要查詢的ip

如果ip存在則顯示訪問次數、流量、等待時間

如果ip不存在則返回 ip is not exists'''

allip = {}

ip = input('ip:\n'.strip())

count = input('{} count is : \n'.format(ip))

size = input('{} size is :\n'.format(ip).strip())

time = input('{} time is: \n'.format(ip).strip())

allip[ip] = [count,size,time]

ask = input('please input ip:\n'.strip())

reset = allip.get(ask,'{} is not exists'.format(ask))

print(reset)

集合 set

集合裡面不能有重複的元素,集合是無序的,並且為不可變元素。(可以理解為將字典中的值去掉)

形式: s = set()

s = set(迭代物件) 可以將乙個迭代物件變成集合 set('abc123123') set([1,2,3,3,2,1,'abc'])

s =

集合的操作方法

例: 

tmps1 =

tmps2 =

增 :add(新增元素) 、 update(將兩個集合合併到一塊)

tmps1.add('abc')

tmps1.update(tmps2)

刪 :

clear (清空) tmps1.clear()

pop (隨機彈出乙個元素) tmps1.pop()

discard(刪除乙個元素,如果元素不存在什麼也不做) tmps1.discard('val')

remove (刪除指定元素,若不存在則異常) tmps2.remove('val')

判斷 :

isdisjoint (沒有交集返回true)

issubset (a.issubset(b),判斷集合a是不是集合b的子集)

issuperset (a.issuperset(b),判斷集合a是不是集合b的父集合)

tmps1.isdisjoint(tmps2)

tmps1.issubset(tmps2)

tmps1.issuperset(tmps2)

求差集: - difference

a.difference(b) 在集合a中但不再集合b中,相當於 a - b

difference_update a.difference_update(b),類似difference,區別是將結果賦值給a.

symmetric_difference 返回兩個集合中不同的元素(本質為去掉公共元素)

symmetric_difference_update a.symmetric_difference_update(b),返回兩個集合中的不同元素,並將結果賦值給a

求交集: & 、 intersection

a.intersection(b) 返回兩個集合的交集,相當於 a & b

intersection_update a.intersection_update(b),返回集合a和集合b的交集,並將結果賦值給a

tmps1 & tmps2

tmps1.intersection(tmps2)

tmps1.intersection_update(tmps2)

求並集: | 、 union 返回兩個集合的並集,即所有元素

tmps1.union(tmps2)

tmps1 | tmps2

深拷貝:copy (深拷貝)

tmps1 = tmps2.copy()

集合和字典

二 字典 dictionary 定義 1.建立格式 par 或者set value 向集合中新增元素 s.add a a 如果a已經存在,不進行任何操作 或者s.update a a可以是列表,元組,字典等。a 可以是多個,用逗號隔開。2.移除元素 s.remove a 將a從集合中移除出去,如果元...

字典和集合

資料以key value來儲存 1.key必須唯一,且必須是不可變的 2.訪問元素 dict key 返回key對應的value 當key不存在時,報錯 dict.get key 返回key對應的value 當key不存在時,返回none 3.新增元素 dict key value 若key已經存在...

Python字典和集合

判斷字典的元素 使用in 或者not in 和has key 函式來判斷 dict one in dict true dict.has key one true one notin dict false更新字典 dict one 11 dict three 33 dict 刪除字典和字典元素 dic...