Python字典和集合

1 字典基础操作

1.1 创建字典

  • 通过{}操作符创建字典
    aDict = {'name':'ke', 'age':25}
  • 通过dict()工厂方法创建字典
    bDict = dict((['name', 'ke'], ['age', 25]))
  • 通过fromkeys()创建具有相同值得默认字典
    cDict = {}.fromkeys(('ke', 'alice'), 23)

1.2 访问字典

  • 字典是映射类型,意味着它没有下标,访问字典中的值需要使用相应的值
>>> for eachKey in aDict:
...     print 'key=%s, value=%s' % (eachKey, aDict[eachKey])
...
key=age, value=25
key=name, value=ke
>>> print '%(name)s' % aDict
ke

1.3 更新字典

  • 通过键更新字典
    • 如果字典中有该键,则更新相关值
      -如果字典中没有该键,则向字典中添加新值
>>> print aDict
{'age': 25, 'name': 'ke'}
>>> aDict['age'] = 22
>>> print aDict
{'age': 22, 'name': 'ke'}
>>> aDict['email']='allenouyangke@icloud.com'
>>> print aDict
{'age': 22, 'name': 'ke', 'email': 'allenouyangke@icloud.com'}
>>>

1.4 删除字典

  • 通过del可以删除字典中的元素或整个字典
  • 使用内部方法clear()可以清空字典
  • 使用pop()方法可以“弹出”字典中的元素
>>> del aDict['email']
>>> print aDict
{'age': 22, 'name': 'ke'}
>>> aDict.pop('age')
22
>>> print aDict
{'name': 'ke'}
>>> aDict.clear()
>>> print aDict
{}

1.5 字典操作符

  • 使用字典键查找操作符号[],查找键所对应的值
  • 使用innot in判断键是否存在于字典中
>>> aDict = {'name': 'ke', 'age': 25}
>>> print aDict
{'age': 25, 'name': 'ke'}
>>> 'name' in aDict
True
>>> 'ke' in aDict
False
>>>

2 字典相关函数

2.1 作用于字典的函数

  • len():返回字典中元素的数目
  • hash():本身不是为字典设计的,但是可以判断某个对象是否可以作为字典的键
>>> print aDict
{'age': 25, 'name': 'ke'}
>>> len(aDict)
2
>>> hash(3)
3
>>> hash([])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>>

2.2 字典内建方法

  • dict.copy():返回字典(浅复制)的一个副本
>>> print aDict
{'age': 25, 'name': 'ke'}
>>> bDict = aDict.copy()
>>> print bDict
{'age': 25, 'name': 'ke'}
>>> bDict['name'] = 'yuyu'
>>> print bDict
{'age': 25, 'name': 'yuyu'}
>>> print aDict
{'age': 25, 'name': 'ke'}
>>>
  • dict.get(key, default=None):对字典dict中的键key,返回它对应的值value,如果字典中不存在此键,则返回default的值
>>> print aDict
{'age': 25, 'name': 'KE'}
>>> aDict.get('name', 'not found')
'KE'
>>> aDict.get('email', 'not found')
'not found'
>>>
  • dict.setdefault(key, default=None):如果字典中不存在key键,由dict[key]=default为它赋值
>>> print aDict
{'age': 25, 'name': 'KE'}
>>> aDict.setdefault('age', 20)
25
>>> aDict.setdefault('iphone', 13570319584)
13570319584
>>> print aDict
{'age': 25, 'name': 'KE', 'iphone': 13570319584}
>>>
  • dict.items():返回一个包含字典中(键,值)对元组的列表
  • dict.keys():返回一个包含字典中键的列表
  • dict.values():返回一个包含字典中所有值得列表
  • dict.update(dict2):将字典dict2的键-值对添加到字典dict

3 集合

3.1 集合类型

  • 数学上,把set称作由不同的元素组成的集合,集合(set)的成员通常被称作集合元素
  • 结合对象是一组无序排列的可哈希的值
  • 集合有两种类型:
    • 可变集合set
    • 不可变集合frozenset
>>> s1 = set('hello')
>>> s2 = frozenset('hello2')
>>> s1
set(['h', 'e', 'l', 'o'])
>>> s2
frozenset(['h', '2', 'e', 'l', 'o'])
>>>

3.2 集合类型操作符

  • 集合支持用innot in操作符检查成员
  • 能够通过len()检查集合大小
  • 能够使用for迭代集合成员
  • 不能进行切片,没有键
  • |:联合,取并值
  • &:交集
  • =:差补

3.3 集合内建方法

  • set.add():添加成员
  • set.update():批量添加成员
  • set.remove():移除成员
  • s.issubset(t):如果s是t的子集,则返回True,否则返回False
  • s.issuperset(t):如果t是s的超集,则返回True,否则返回False
  • s.union(t):返回一个新集合,该集合是s和t的并集
  • s.intersection(t):返回一个新集合,该集合是s和t的交集
  • s.difference(t):返回一个新集合,该集合是s的成员,但不是t的成员

推荐阅读更多精彩内容