Python 07-集合和字典
1、集合 —class set
1.1、介绍
Python也包含有 集合 类型。集合是由不重复元素组成的无序的集。
它的基本用法包括成员检测和消除重复元素。集合对象也支持像 并集,交集,差集,对称差分等数学运算。
class set(object) — 继承object
- 构造函数
set() -> new empty set object
set(iterable) -> new set object - 可以用多种方式构建列表
- 花括号{ } 或 set() 函数可以用来创建集合。
- 要创建一个空集合,只能用 set() 而不能用 {},因为后者是创建一个空字典
- 集合也支持推导式形式
1.2、用法示例
>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket) # show that duplicates have been removed
{'orange', 'banana', 'pear', 'apple'}
>>> 'orange' in basket # fast membership testing
True
>>> 'crabgrass' in basket
False
>>> # Demonstrate set operations on unique letters from two words
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a # unique letters in a
{'a', 'r', 'b', 'c', 'd'}
>>> a - b # letters in a but not in b
{'r', 'd', 'b'}
>>> a | b # letters in a or b or both
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b # letters in both a and b
{'a', 'c'}
>>> a ^ b # letters in a or b but not both
{'r', 'd', 'b', 'm', 'z', 'l'}
2、字典 —class dict
2.1、介绍
另一个非常有用的 Python 內置数据类型是 字典 (参见 映射类型 — dict)。
字典是以 关键字 为索引的,关键字可以是任意不可变类型,通常是字符串或数字。
理解字典的最好方式,就是将它看做是一个 键: 值 对的集合,键必须是唯一的(在一个字典中)。
◉ 一对花括号可以创建一个空字典:{} 。
◉ 另一种初始化字典的方式是在一对花括号里放置一些以逗号分隔的键值对,而这也是字典输出的方式。
- 构造函数
class dict(object)
# 新的空字典
dict()
#从映射对象的 (键、值)对 初始化的新空字典
dict(mapping)
# 通过可迭代对象 创建新字典
dict(iterable)
# 使用关键字参数列表中的name=value对初始化新字典。例如:dict(one=1,two=2)
dict(**kwargs)
-
字典可用多种方式来创建:
-
使用花括号内以逗号分隔 键: 值 对 的方式: {‘jack’: 4098, ‘sjoerd’: 4127} or {4098: ‘jack’, 4127: ‘sjoerd’}
-
使用字典推导式: {}, {x: x ** 2 for x in range(10)}
-
使用类型构造器: dict(), dict([(‘foo’, 100), (‘bar’, 200)]), dict(foo=100, bar=200)
-
-
示例
>>> a = dict(one=1, two=2, three=3) >>> b = {'one': 1, 'two': 2, 'three': 3} >>> c = dict(zip(['one', 'two', 'three'], [1, 2, 3])) >>> d = dict([('two', 2), ('one', 1), ('three', 3)]) >>> e = dict({'three': 3, 'one': 1, 'two': 2}) >>> a == b == c == d == e True
2.2、主要方法
-
list(d)
返回字典 d 中使用的所有键的列表。 -
len(d)
返回字典 d 中的项数。 -
d[key]
返回 d 中以 key 为键的项。 如果映射中不存在 key 则会引发 KeyError。 -
d[key] = value
将 d[key] 设为 value。 -
del d[key]
将 d[key] 从 d 中移除。 如果映射中不存在 key 则会引发 KeyError。 -
key in d
如果 d 中存在键 key 则返回 True,否则返回 False。 -
key not in d
等价于 not key in d。 -
iter(d)
返回以字典的键为元素的迭代器。 这是 iter(d.keys()) 的快捷方式。 -
clear()
移除字典中的所有元素。 -
copy()
返回原字典的浅拷贝。 -
get(key[, default])
如果 key 存在于字典中则返回 key 的值,否则返回 default。 -
pop(key[, default])
如果 key 存在于字典中则将其移除并返回其值,否则返回 default。 -
popitem()
从字典中移除并返回一个 (键, 值) 对。 键值对会按 LIFO 的顺序被返回。 -
reversed(d)
返回一个逆序获取字典键的迭代器。 这是 reversed(d.keys()) 的快捷方式。 -
setdefault(key[, default])
如果字典存在键 key ,返回它的值。如果不存在,插入值为 default 的键 key ,并返回 default 。 default 默认为 None。 -
update([other])
使用来自 other 的键/值对更新字典,覆盖原有的键。 返回 None。update() 接受另一个字典对象,或者一个包含键/值对(以长度为二的元组或其他可迭代对象表示)的可迭代对象。 如果给出了关键字参数,则会以其所指定的键/值对更新字典: d.update(red=1, blue=2)。
这一组是视图对象文档的概念
- items()
返回由字典项 ((键, 值) 对) 组成的一个新视图。 参见 视图对象文档。 - keys()
返回由字典键组成的一个新视图。 参见 视图对象文档。 - values()
返回由字典值组成的一个新视图。 参见 视图对象文档。
m = {1: "hello", 2: "world"}
print(m)
print(m.keys())
print(m.values())
print(m.items())
"""
{1: 'hello', 2: 'world'}
dict_keys([1, 2])
dict_values(['hello', 'world'])
dict_items([(1, 'hello'), (2, 'world')])
"""