Python08

字典用法
比较大小

Ⅰ 如果字典的长度不同,用cmp(dict1,dict2)比较大小时,如果字段dict1比dict2长,cmp()返回正直,如果dict2比dict1长,则返回负值,字典的键越多这个字典就越大
Ⅱ 如果两个字典的长度相同,那就按字典的键比较,键比较的顺序和keys()方法返回键的顺序相同
Ⅲ 如果两个字典的长度相同而且他们的键也匹配,则用字典中每个相同的键所对应的值进行比较,一旦出现不匹配的值,就对这两个值进行直接比较
Ⅳ 如果字典有相同的长度,相同的键,每个键也对应相同的值,则字典完全匹配,返回0值

>>> dict([['x',1],['y',2]])
{'x': 1, 'y': 2}
>>> dict([('xy'[i-1],1) for i in range(1,3)])
{'x': 1, 'y': 1}
>>> dict(x=1,y=2)
{'x': 1, 'y': 2}
>>> dict1=dict(x=1,y=2)
>>> dict1
{'x': 1, 'y': 2}
>>> dict2=dict(**dict1)
>>> dict2
{'x': 1, 'y': 2}
>>> dict3=dict2.copy()
>>> dict3
{'x': 1, 'y': 2}
>>> len(dict3)
2
>>> dict2.keys()
dict_keys(['x', 'y'])
>>> dict2.values()
dict_values([1, 2])
>>> dict2.items()
dict_items([('x', 1), ('y', 2)])
>>> for key in dict2.keys():
...     print('dict2 key:', key, ' value:',dict2[key])
...
dict2 key: x  value: 1
dict2 key: y  value: 2
可用方法
字典方法含义
dict.clear()删除字典中所有元素
dict.copy()返回字典的一个副本
dict.fromkeys(seq,val=None)创建并返回一个新字典,以seq中的元素做该字典的键,val做该字典中所有键对应的初始值(为提供默认为None)
dict.get(key,default=None)对字典dict中的键key,返回它对于的值value,如果字典中不存在此键,则返回default的值(默认为None)
dict.has_key(key)如果key在字典中存在,返回True,否则返回False
dict.items()返回一个包含字典中键,值对元祖列表
dict.keys()返回一个包含字典中键的列表
dict.iter()方法iteritems(),iterkeys(),itervalues()与它们对应的非迭代方法一样,不同的是它们返回一个迭代子,而不是一个列表
dict.pop(key[,default])和方法get()相似,如果字典中key键存在,删除并返回dict[key],如果key键不存在,且没有给出default的值,引发keyError异常
dict.setdefault(key,default=None)如果字典中不存在key键,有dict[key]=default为它赋值
dict.update(dict2)将字典dict2的键-值对添加到字典dict
dict.values()返回一个包含字典中所有值的列表
集合

集合(set)是一组无须排列的可哈希值,其值可以做字典中的键。集合(sets)本身有两种类型,可变集合(set)和不可变集合(frozenset),创建使用set()或frozenset。集合支持(in, not in,==,!=,>,>=,<,<=,|,&,-,^,|=,&=,-=,^=),加号不是集合类型的运算符,对于混合类型操作,如果左右两个操作数的类型相同,既都是可变集合或不可变集合,则产生的结果类型是相同的,如果左右两个操作数不同,则产生的操作类型与做操作数的类型相同。

>>> s=set('sky')
>>> s
{'k', 's', 'y'}
>>> v=frozenset('blue')
>>> v
frozenset({'b', 'u', 'e', 'l'})
>>> type(s)
<class 'set'>
>>> type(v)
<class 'frozenset'>
>>> len(v)
4
>>> s=set('sskkyy')
>>> s
{'k', 's', 'y'}
>>> len(s)
3
>>> 'k' in s
True
>>> s.add('E')
>>> s
{'k', 's', 'y', 'E'}
>>> v.add('A')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'frozenset' object has no attribute 'add'
>>> s.update('sk')
>>> s
{'k', 's', 'y', 'E'}
>>> s.update('skw')
>>> s
{'s', 'E', 'w', 'k', 'y'}
>>> s.remove('w')
>>> s
{'s', 'E', 'k', 'y'}
>>> s-=set('ky')
>>> s
{'s', 'E'}
>>> del s
>>> s
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 's' is not defined
集合类型操作符,函数和方法
函数/方法名等价运算符说明
len(s)集合s中元素的个数
set([obj])obj必须是支持迭代的,由obj中的元素创建集合,否则创建一个空集合
forzenset([obj])与set方法相同,返回不可变集合
s.issubset(t)s<=ts中所有的元素都是t的成员
s.issupperset(t)s>=tt中所有的元素都是s的成员
s.union(t)s|ts或t中的元素
s.intersection(s)s&ts和t中的元素
s.difference(t)s-ts中的元素,而不是t中的元素
s.symmetric_difference(t)s^ts或t中的元素,但不是s和t共有的元素
s.copy()返回s的(浅复制)副本
s.update(t)s|=t将t中的成员添加s
s.intersection_update(t)s&=ts中仅包括s和t中共有的成员
s.difference_update(t)s-=ts中包括仅属于s但不属于t的成员
s.symmetric_difference_update(t)s^=ts中包括仅属于s或仅属于t的成员
s.add(obj)将obj添加到s
s.remove(obj)将obj从s中删除,如果s中不存在obj将引发KeyError
s.discard(obj)如果s中存在obj,从s中删除它,不存在obj不会引发异常
s.pop()移除并返回s中的任意一个元素
s.clear()移除s中的所有元素
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值