Python集合

时间:2020-02-23 14:42:31  来源:igfitidea点击:

Python集合模块附带了许多容器数据类型。
这些数据类型具有不同的功能,我们将在本文中学习。
让我们研究一下python集合模块,以及最重要且使用最广泛的数据类型。

Python集合模块

我们将在python集合模块中研究的集合是:

  • OrderedDict
  • defaultdict
  • counter
  • namedtuple
  • deque

1. OrderedDict

使用OrderedDict,当将键和值插入字典时,插入顺序得以保持。
如果我们尝试再次插入密钥,这将覆盖该密钥的先前值。

这是一个示例程序,用于演示OrderedDict的用法:

from collections import OrderedDict

roll_no = OrderedDict([
  (11, 'Shubham'),
  (9, 'hyman'),
  (17, 'theitroad'),
])

for key, value in roll_no.items():
  print(key, value)

让我们看一下该程序的输出:请注意,输出顺序与插入顺序完全相同。

2.defaultdict

默认词典可以包含重复的键。
使用默认字典的好处是我们可以收集属于同一密钥的项目。
让我们看一下演示相同内容的代码段:

from collections import defaultdict

marks = [
  ('Shubham', 89),
  ('hyman', 92),
  ('theitroad', 99),
  ('theitroad', 98)
]

dict_marks = defaultdict(list)

for key, value in marks:
  dict_marks[key].append(value)

print(list(dict_marks.items()))

让我们看一下该程序的输出:两次使用了键" theitroad",并且在打印字典后就收集了相同的值。

3.counter

Counter集合使我们能够对所有使用键插入到集合中的项目进行计数。
这是一个示例程序,说明其工作方式:

from collections import Counter

marks_list = [
  ('Shubham', 89),
  ('hyman', 92),
  ('theitroad', 99),
  ('theitroad', 98)
]

count = Counter(name for name, marks in marks_list)
print(count)

让我们看一下该程序的输出:这样,我们就可以计算出密钥在列表中出现的次数。

4.命名元组

众所周知,Python元组是不可变的列表。
这意味着不能给元组中存在区域的键赋值。
首先,让我们看看如何用Python制作元组:

shubham = ('Shubham', 23, 'M')
print(shubham)

让我们看一下该程序的输出:通过为该元组中存在的所有值分配名称,可以将该元组转换为命名元组。
这也将为当前数据提供更多上下文:

import collections

User = collections.namedtuple('User', 'name age gender')
shubham = User(name='Shubham', age=23, gender='M')
print(shubham)

print('Name of User: {0}'.format(shubham.name))

该程序的输出为:了解如何使用提供的名称访问命名元组的属性。
另外,请记住,键名不能是Python关键字。

5.双端队列

双端队列是双端队列,它允许我们从两端添加和删除元素。
这增强了堆栈或者队列的功能。
这是一个示例程序:

import collections

name = collections.deque('Shubham')
print('Deque       :', name)
print('Queue Length:', len(name))
print('Left part   :', name[0])
print('Right part  :', name[-1])

name.remove('b')
print('remove(b):', name)

让我们看一下该程序的输出:因此,元素的出队是自动完成的。
我们还可以在特定端的出队中插入元素。

import collections

name = collections.deque('Shubham')
print('Deque       :', name)

name.extendleft('...')
name.append('-')
print('Deque       :', name)