Skip to content

Latest commit

 

History

History
419 lines (269 loc) · 7.36 KB

collections-python.md

File metadata and controls

419 lines (269 loc) · 7.36 KB

关于 Python 中的集合

原文:www.kdnuggets.com/2022/09/collections-python.html

关于 Python 中的集合

图片由编辑提供

Python 拥有一个名为 collections 的模块,其中包含不同类型的容器。容器是一个 Python 对象,它包含不同的对象,并实现了一种检索这些对象和对它们进行迭代的方法。

在本教程中,我们将深入探讨由 collections 模块实现的不同类型的容器。

  • Counters

  • OrderedDict

  • DefaultDict

  • ChainMap

  • NamedTuple

  • DeQue

Counters

Counter 是 dict 的子类,用于在无序字典中保持可迭代对象中元素的计数,其中键表示元素,值表示该元素在可迭代对象中的计数

为了初始化一个计数器对象,我们使用 counter() 函数,它可以以以下方式调用

from collections import Counter

1) 使用项的序列

counter = Counter(['D','C','C','E','E','E','A','A','X'])
print(counter)

输出:

Counter({'D': 1, 'C': 2, 'E': 3, 'A': 2, 'X': 1})

2) 使用字典

counter = Counter({'X':3,'Y':2,'Z':1})
print(counter)

输出:

Counter({'X': 3, 'Y': 2, 'Z': 1})

3) 使用关键字参数

counter = Counter(X=3,Y=2,Z=1)
print(counter)

输出:

Counter({'X': 3, 'Y': 2, 'Z': 1})

OrderedDict

OrderedDict 是 dict 的子类,但不同于普通字典,它们记住键插入的顺序

from collections import OrderedDict

orderdict = OrderedDict()
orderdict["x"] = 2
orderdict["y"] = 3
orderdict["z"] = 4

print(orderdict)

输出:

OrderedDict([('x', 2), ('y', 3), ('z', 4)])

1) 当在现有有序字典中插入新项目时,新项目会附加在字典的末尾,从而保持字典的顺序

orderdict["v"] = 5
print(orderdict)

输出:

OrderedDict([('x', 2), ('y', 3), ('z', 4), ('v', 5)])

2) 当从现有有序字典中删除一个项目并重新插入相同的项目时,该特定项目会被插入到字典的末尾

del orderdict["x"]

print(orderdict)

输出:

OrderedDict([('y', 3), ('z', 4), ('v', 5)])
orderdict["x"] = 2
print(orderdict)

输出:

OrderedDict([('y', 3), ('z', 4), ('v', 5), ('x', 2)])

3) 当重新分配或更新 OrderedDict 对象中现有键值对的值时,键的位置保持不变,但键的值会更新

orderdict.update(z = "four")
print(orderdict)

输出:

OrderedDict([('y', 3), ('z', 'four'), ('v', 5), ('x', 2)]

DefaultDict

DefaultDict 是 dict 的子类,为从未存在的键提供默认值,从而避免抛出 keyError

from collections import defaultdict

1) 使用 list 作为 defaultdict

dftdict = defaultdict(list)

for i in range(3):
dftdict[i].append(i)

print(dftdict)

输出:

defaultdict(list, {0: [0], 1: [1], 2: [2]})

2) 使用 int 作为 defaultdict

intdict = defaultdict(int)

X = [1,2,3,4,5,1,1,3,4,5]

for i in X:

#The default value is 0 so there is no need to enter the key first

intdict[i] += 1

print(intdict)

输出:

defaultdict(int, {1: 3, 2: 1, 3: 2, 4: 2, 5: 2})

ChainMap

ChainMap 用于将多个字典合并成一个单元,因此返回字典列表

from collections import ChainMap

x1 = {'a': 0, 'b': 1}
x2 = {'c':2,'d':3}
x3 = {'e':4,'f':5}

chainmap = ChainMap(x1,x2,x3)

print(chainmap)

输出:

ChainMap({'a': 0, 'b': 1}, {'c': 2, 'd': 3}, {'e': 4, 'f': 5})

1) 使用键名访问值

print(chainmap['a'])

输出:

0

2) 访问值

print(chainmap.values())

输出:

ValuesView(ChainMap({'a': 0, 'b': 1}, {'c': 2, 'd': 3}, {'e': 4, 'f': 5}))

3) 访问键

print(chainmap.keys())

输出:

KeysView(ChainMap({'a': 0, 'b': 1}, {'c': 2, 'd': 3}, {'e': 4, 'f': 5}))

4) 插入新字典

通过使用 new_child() 方法,新字典被插入到 ChainMap 的开头

chainmap1 = chainmap.new_child({'g':6,'h':7})
print(chainmap1)

输出:

ChainMap({'g': 6, 'h': 7}, {'a': 0, 'b': 1}, {'c': 2, 'd': 3}, {'e': 4, 'f': 5})

NamedTuple

NamedTuple 是一个具有每个位置名称的元组对象

from collections import namedtuple

1) 声明 namedtuple

band = namedtuple('Country',['name','capital','famousband'])

2) 向 namedtuple 中插入值

val = band("south korea","Seoul","BTS")
print(val)

输出:

Country(name='south korea', capital='Seoul', famousband='BTS')

3) 使用索引访问值

print(val[0])

输出:

'south korea'

4) 使用名称访问值

print(val.name)

输出:

'south korea'

Deque

deque 是一个列表,用于在容器的两侧实现 append 和 pop 操作

from collections import deque

1) 声明 deque

queue = deque([4,5,6])
print(queue)

输出:

deque([4, 5, 6])

2) 使用 append 在 deque 的右侧插入元素,即 deque 的末尾

queue.append(7)
print(queue)

输出:

deque([4, 5, 6, 7])

3) 使用 append 在 deque 的左侧插入元素,即 deque 的开始位置

queue.appendleft(3)

print(queue)

输出:

deque([3, 4, 5, 6, 7])

4) 使用 pop 从 deque 的右侧删除元素,即 deque 的末尾

queue.pop()
print(queue)

输出:

deque([3, 4, 5, 6])

5) 使用 popleft 从 deque 的左侧删除元素,即 deque 的开头

queue.popleft()
print(queue)

输出:

deque([4, 5, 6])

Priya Sengar (Medium, Github) 是一名来自旧金山大学的数据科学家。Priya 热衷于解决数据问题并将其转化为解决方案。


我们的前 3 个课程推荐

1. 谷歌网络安全证书 - 快速进入网络安全职业领域。

2. 谷歌数据分析专业证书 - 提升你的数据分析能力

3. 谷歌 IT 支持专业证书 - 支持你的组织进行 IT 工作


更多相关内容