No.6 字典与集合
一、字典(映射类型)
1、语法:dict={key1:value1,key2:value2,…}
e.g.>>>dict1={‘李宁’:‘一切皆有可能’,‘耐克’:‘Just do it’,‘阿迪达斯’:‘Impossible is nothing’}
>>>print(‘李宁的口号是:’,dict1[‘李宁’])
李宁的口号是:一切皆有可能
e.g.>>>dict2=dict(高尔基=‘海燕啊海燕’,戴望舒=‘丁香一样的结着愁怨的姑娘’)
>>>dict2
{‘戴望舒’:‘丁香一样的结着愁怨的姑娘’,‘高尔基’:‘海燕啊海燕’}
若要给字典添加一对键(key)与值(value),则是
>>>dict2[‘刘慈欣’]= ‘宇宙社会学’
>>>dict2
{‘戴望舒’:‘丁香一样的结着愁怨的姑娘’,‘高尔基’:‘海燕啊海燕’,‘刘慈欣’:‘宇宙社会学’}
2、字典的内键方法
1)、fromkeys(s[,v])
创建并返回一个新的字典
e.g.>>>dict1.feomkeys((1,2,3))
{1:None,2:None,3:None}
注:第二个参数默认值为None
>>>dict1.fromkeys((1,2,3),(‘one’,‘two’,‘three’))
{1, (‘one’,‘two’,‘three’) ,2:(‘one’,‘two’,‘three’),3(‘one’,‘two’,‘three’)
2) 访问字典的方法
keys():返回字典键的引用
values():返回内容
items():全部返回
e.g.>>>dict1=dict1.fromkeys(range(3),‘赞’)
>>>dict1
{0:‘赞’,1:‘赞’,2:‘赞’}
>>>for eachkey in dict1.keys()
print(eachkey)
0
1
2
>>>for eachvalue in dict1.values()
print(eachvalue)
赞
赞
赞
>>>for eachitem in dict1.itemss()
print(eachitem)
(0,‘赞’)
(1,‘赞’)
(2,‘赞’)
print(dict1[2])
赞
注:dict1[3]会报错print(dict1.get(3))
None(dict1.get(3,‘没有’)
‘没有’(dict1.get(2,‘没有’)
‘赞’
注:当不知道一个键是否在其中,可以用成员资格操作符 in 和 not in
>>>2 in dict1
True
3 in dict1
False
清空一个字典:clear()
>>>dict1.clear()
>>>dict1
{}
#dict1.clear()和dict1={}的差别
>>>dict1={}
>>>a={‘姓名’,‘小甲鱼’}
>>>b=a
>>>b
{‘姓名’,‘小甲鱼’}
>>>a={}
>>>a
{}
>>>b
{‘姓名’,‘小甲鱼’}
>>>a=b
a
{‘姓名’,‘小甲鱼’}a.clear()
a
{}b
{}
copy():前拷贝
a={1:‘one’}
b=a.copy()(表层拷贝)
c=a(完全拷贝)
c
{1:‘one’}b
{1:‘one’}a
{1:‘one’}c[2]=‘two’
c
{1:‘one’,2:‘two’}a
{1:‘one’,2:‘two’}b
{1:‘one’}
pop()和popitem()
a.pop(2)
‘two’#弹出一个项a
{1:‘one’}a.popitem()
{1:‘one’}#随机a
{}
setdefault()
a.setdefault(5,‘five’)
‘five’a
{5,‘five’}
update()
b={5,‘six’}
a.update(b)
a
{5,‘six’}
二、集合
所有的元素都是唯一的,有唯一性。但是是无序的
1、创建集合的方法
1)直接把一堆元素用花括号括起来
e.g.>>>num1={1,2,3,4,5,5,4,3}
>>>num1
{1,2,3,4,5}
>>>num1[2]
报错
2)使用set()工厂函数
>>>set1=set([1,2,3,4,5,5,4,3)]
>>>set1
{1,2,3,4,5}
2、如何访问集合中的值
1)使用for把集合中的数据一个个读取出来
2)通过in和not in判断一个元素是否在集合中已经存在
3、不可变集合frozen
e.g. >>> num2=frozenset([1,2,3,4,5])
>>>num2.add(0)
报错