Python字典和集合

判断字典的元素
使用in 或者not in 和has_key()函数来判断

>>> Dict={'one':1,'tow':2}
>>> 'one' in Dict
True
>>> Dict.has_key('one')
True
>>> 'one' not in Dict
False

更新字典

>>> Dict['one']=11
>>> Dict['three']=33
>>> Dict
{'three': 33, 'tow': 2, 'one': 11}

删除字典和字典元素

>>> Dict.pop('one')
11
>>> Dict
{'three': 33, 'tow': 2}
>>> del Dict['tow']
>>> Dict
{'three': 33}
>>> Dict['one']=11
>>> Dict.clear()
>>> Dict
{}
>>> del Dict
>>> Dict
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'Dict' is not defined

dict.pop(‘key’)和del dict[‘key’]删除指定字典条目
dict.clear()是删除dict的所有条目
del dict是删除整个字典


注意:请不要用 dict, list,file, bool, str, input, len 这样的内建类型为变量命名


字典的比较

  1. 比较字典长度
  2. 比较字典的键(先比较第一个)
  3. 比较键的值

dict()

>>> List=['a','b','c','d']
>>> Dict=dict(zip(List,range(4)))
>>> Dict
{'a': 0, 'c': 2, 'b': 1, 'd': 3}
>>> dict(x=1,y=2)
{'y': 2, 'x': 1}

映射类型的内建方法

函数说明
dict.keys()返回字典的所有键
dict.values()返回字典的所有键的值
dict.items()以元组的形式返回字典的所有的键和值
dict.copy()对字典进行浅复制
dict.fromkeys(seq,val=None)创建字典,以seq元素为key,val为字典的所有值
dict.get(key,default=None)返回字典key对应的值,如果没有返回default的值
dict.setdefault(key,default=None)返回字典key字典对应值,如果没有key就创建一个新的key
dict.update(Dict)将Dict的key-values添加到dict里
>>> Dict
{'a': 0, 'c': 2, 'b': 1, 'd': 3}
>>> Dict.keys()
['a', 'c', 'b', 'd']
########
>>> Dict.values()
[0, 2, 1, 3]
#######
>>> Dict.items()
[('a', 0), ('c', 2), ('b', 1), ('d', 3)]
######
>>> D=dict.copy(Dict)
[('a', 0), ('c', 2), ('b', 1), ('d', 3)]
######
>>> dict.fromkeys('abc')
{'a': None, 'c': None, 'b': None}
#########
>>> dict.fromkeys(D)
{'a': None, 'c': None, 'b': None, 'd': None}
##############
>>> Dict.get('a',123)
0
>>> Dict.get('l',123)
123
{'a': 0, 'c': 2, 'b': 1, 'd': 3,'l':123}
##################
>>> D.setdefault('l',6)
6
>>> D
{'a': 0, 'c': 2, 'b': 1, 'd': 3, 'l': 6}
#################
>>> D2
{'test': 666}
>>> Dict.update(D2)
>>> Dict
{'a': 0, 'test': 666, 'c': 2, 'b': 1, 'd': 3}

集合类型
集合和其他容器差不多,支持用in和not in判断集合里的元素
可以用len()获得集合的基数
因为集合是无序的 所以不能用索引和切片操作,也没有keys
但可以for用循环迭代
集合类型还分可变集合和不可变集合(frozenset)

>>> s1=set('lockeroots')
>>> s1
set(['c', 'e', 'k', 'l', 'o', 's', 'r', 't'])
>>> s2=frozenset('lockeroots')
>>> s2
frozenset(['c', 'e', 'k', 'l', 'o', 's', 'r', 't'])

访问集合的值

>>> for i in s1:
...     print i
... 
c
e
k
l
o
s
r
t
>>> 'l' in s1
True
>>> 'd' in s1
False

更新集合值
不可变集合不能更新

>>> s1.add('d')
>>> 'd' in s1
True
>>> s1.update('abc')
>>> s1
set(['a', 'c', 'b', 'e', 'd', 'k', 'l', 'o', 's', 'r', 't'])
>>> s1.remove('a')
>>> s1
set(['c', 'b', 'e', 'd', 'k', 'l', 'o', 's', 'r', 't'])

集合的操作符
联合(|)
表示把两个集合联合在一起

交集(&)
两个集合中有相同的元素

差集/补集(-)
元素只属于第一个集合不属于第二个集合

对称差分(^)
显示只属于第一个元素不属于第二个元素和只属于第二个元素不属于第一个元素

>>> s1=set('abcdefg')
>>> s2=set('efghijk')
>>> s1|s2
set(['a', 'c', 'b', 'e', 'd', 'g', 'f', 'i', 'h', 'k', 'j'])
>>> s1&s2
set(['e', 'g', 'f'])
>>> s1-s2
set(['a', 'c', 'b', 'd'])
>>> s1^s2
set(['a', 'c', 'b', 'd', 'i', 'h', 'k', 'j'])

集合的内建方法
s.issubset(s1) 如果s是s2的子集,则返回True,否则返回False
s.issuperset(s1) 如果s是s2的超集,则返回True,否则返回False
s.copy() 对s进行浅复制

>>> s=s1|s2
>>> s
set(['a', 'c', 'b', 'e', 'd', 'g', 'f', 'i', 'h', 'k', 'j'])
>>> s.issubset(s1)
False
>>> s.issuperset(s1)
True
>>> s1.union(s2)
set(['a', 'c', 'b', 'e', 'd', 'g', 'f', 'i', 'h', 'k', 'j'])
>>> s1.intersection(s2)
set(['e', 'g', 'f'])
>>> s3=s1.copy()
>>> s3
set(['a', 'c', 'b', 'e', 'd', 'g', 'f'])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值