set和dict

dict属于mapping类型

from collections.abc import Mapping,MutableMapping
from collections.abc import __all__

# dict 属于Mapping类型

a = {}
print(isinstance(a,MutableMapping))

copy 浅拷贝

a = {
    "liming1":{"company":"tencent1"},
    "liming2":{"company":"tencent2"},
}

# clear
""" D.clear() -> None.  Remove all items from D. """
# a.clear()

#copy 浅拷贝
""" D.copy() -> a shallow copy of D """
new_dict = a.copy()
new_dict['liming1']['company'] = 'tencent3'

print(a)
print(new_dict)

###########
{'liming1': {'company': 'tencent3'}, 'liming2': {'company': 'tencent2'}}
{'liming1': {'company': 'tencent3'}, 'liming2': {'company': 'tencent2'}}

fromkeys

# fromkeys
new_list = ['liming1','liming2']

new_dict = dict.fromkeys(new_list,{'company':'tencent'})

print(new_dict)

update

# update

new_dict.update({'lisa':{"company":"tencent2"}})
new_dict.update({'liming2':{"company":"tencent2"}})
new_dict.update(jenny={'company':'beijing'})
new_dict.update([('jenny',{'company':'shanghai'})])
print(new_dict)

defaultdict  

__missing__ 很重要
from collections import defaultdict
import collections
s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]

d = collections.defaultdict(list)
for k, v in s:
    d[k].append(v)

print(list(d.items()))

s = 'mississippi'
d = defaultdict(int)
for k in s:
     d[k] += 1
print(list(d.items()))#set 不可变集合 fronzenset  无序  不重复

 

set和frozenset 的区别

刚开始也讲了frozenset是不可变的,如果修改是报错的,那到底有什么用处呢
应用场景:一般dict 的key 是不变的,我们就可以用
那我们用代码证明下,set不会报错,frozenset 会报错.

s = {'a','b'}
s.add('c')
print(s)

f = frozenset('abcd')  # 可以作为dict的key
print(f)

# 向set添加数据
another_set = set('fgh')

s.update(another_set)
print(s)

difference 的用法

# 先看方法描述吧 ( Return the difference of two or more sets as a new set.)
# 用例子加深印象。
a=set("abc")
print(a.difference("bcd"))
print(a)

set集合运算(|,&,-)

a=set("abc")
b=set("bcd")
print(a-b)   #对a进行去重
print(a | b) #并集
print(a & b) #交集

# {'a'}
# {'c', 'a', 'd', 'b'}
# {'c', 'b'}

 

posted @ 2019-06-23 16:39  Richie`  阅读(198)  评论(0编辑  收藏  举报