标签: python-collections

用于展平列表的Python Counter元素

现在要压扁Counter元素我正在使用代码

import operator
from collections import Counter
from functools import reduce

p = Counter({'a': 2, 'p': 1})
n_p = [[e] * p[e] for e in p]
f_p = reduce(operator.add, n_p)

# result: ['a', 'a', 'p']
Run Code Online (Sandbox Code Playgroud)

所以我很想知道,如果可以更直接地完成.

python counter python-collections

2
推荐指数
1
解决办法
142
查看次数

如何制作计数器子集?

我正在尝试使用Python标准库集合。

我有一个计数器

>>> c = Counter('achdnsdsdsdsdklaffaefhaew')
>>> c
Counter({'a': 4,
         'c': 1,
         'h': 2,
         'd': 5,
         'n': 1,
         's': 4,
         'k': 1,
         'l': 1,
         'f': 3,
         'e': 2,
         'w': 1})
Run Code Online (Sandbox Code Playgroud)

我现在想要的是以某种方式获取此计数器的子集作为另一个Counter对象。像这样:

>>> new_c = do_subset(c, [d,s,l,e,w])
>>> new_c
Counter({'d': 5,
         's': 4,
         'l': 1,
         'e': 2,
         'w': 1})
Run Code Online (Sandbox Code Playgroud)

先感谢您。

python data-structures python-collections

2
推荐指数
1
解决办法
303
查看次数

如何在队列python 3前面打印元素?

    导入队列
    q = queue.Queue()
    q.put(5)
    q.put(7)

print(q.get()) 删除队列前面的元素。如何在不删除它的情况下打印此元素?有可能这样做吗?

python queue syntax python-3.x python-collections

1
推荐指数
1
解决办法
8225
查看次数

`dict.pop` 忽略 `collections.defaultdict(default_factory)` 设置的默认值

Python 会dict.pop(key[, default])忽略由 设置的默认值,collections.defaultdict(default_factory)如以下代码片段所示:

from collections import defaultdict

d = defaultdict(lambda: 1)
d['a']
d['b'] = 2
print(d.pop('a')) # 1
print(d.pop('b')) # 2
print(d.pop('c', 3)) # 3
d.pop('e') # KeyError: 'e'
Run Code Online (Sandbox Code Playgroud)

d是一个defaultdict(lambda: 1). d.pop('e')导致KeyError. 这是故意的吗?不应该d.pop('e')返回,1因为这是设置的默认值defaultdict

python dictionary python-3.x defaultdict python-collections

1
推荐指数
1
解决办法
213
查看次数

如何使用 for 循环填充元组

我正在尝试使用 for 循环用命名元组填充元组。

下面的示例代码有效:

import collections

Experiment = collections.namedtuple('Experiment', ['parameter', ])

nsize = 3

parameters = {}
for n in range(0, nsize):
    parameters[n] = n +1
   

experiments = (
        Experiment(parameter = parameters[0]),   
        Experiment(parameter = parameters[1]),
        Experiment(parameter = parameters[2]),)
Run Code Online (Sandbox Code Playgroud)

但是,我想用 for 循环替换最后一部分:

for n in range(0, nsize):
    experiments[n] = Experiment(parameter = parameters[n])
Run Code Online (Sandbox Code Playgroud)

这给出了错误:

TypeError: 'tuple' object does not support item assignment
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

python python-collections

0
推荐指数
1
解决办法
901
查看次数

Python的collections.Counter.total()的时间复杂度是多少?

Python的collections.Counter.total()的时间复杂度是多少?我已阅读该方法的文档,但没有提及其效率。有谁知道该方法是如何在幕后实现的以及它的时间复杂度是多少?

python python-collections

0
推荐指数
1
解决办法
428
查看次数