相关疑难解决方法(0)

求和两个collections.Counter()对象的内容

我正在与collections.Counter()柜台合作.我想以有意义的方式结合其中两个.

假设我有2个计数器,比方说,

Counter({'menu': 20, 'good': 15, 'happy': 10, 'bar': 5})
Run Code Online (Sandbox Code Playgroud)

Counter({'menu': 1, 'good': 1, 'bar': 3})
Run Code Online (Sandbox Code Playgroud)

我想结束:

Counter({'menu': 21, 'good': 16, 'happy': 10,'bar': 8})
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

python counter

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

Python:优雅地将字典与值的sum()合并

我正在尝试合并来自多个服务器的日志.每个日志都是元组(date,count)列表.date可能会出现不止一次,我希望生成的字典保存所有服务器的所有计数的总和.

这是我的尝试,例如一些数据:

from collections import defaultdict

a=[("13.5",100)]
b=[("14.5",100), ("15.5", 100)]
c=[("15.5",100), ("16.5", 100)]
input=[a,b,c]

output=defaultdict(int)
for d in input:
        for item in d:
           output[item[0]]+=item[1]
print dict(output)
Run Code Online (Sandbox Code Playgroud)

这使:

{'14.5': 100, '16.5': 100, '13.5': 100, '15.5': 200}
Run Code Online (Sandbox Code Playgroud)

正如所料.

因为看到代码的同事,我准备去香蕉了.她坚持认为必须有一个更加Pythonic和优雅的方式,没有这些嵌套的循环.有任何想法吗?

python dictionary

30
推荐指数
3
解决办法
3万
查看次数

如何从字典中减去值

我在Python中有两个词典:

d1 = {'a': 10, 'b': 9, 'c': 8, 'd': 7}
d2 = {'a': 1, 'b': 2, 'c': 3, 'e': 2}
Run Code Online (Sandbox Code Playgroud)

我想在字典d1-d2之间减去值并得到结果:

d3 = {'a': 9, 'b': 7, 'c': 5, 'd': 7 }
Run Code Online (Sandbox Code Playgroud)

现在我使用两个循环,但这个解决方案不是太快

for x,i in enumerate(d2.keys()):
        for y,j in enumerate(d1.keys()):
Run Code Online (Sandbox Code Playgroud)

python dictionary

18
推荐指数
3
解决办法
2万
查看次数

合并n-dictionaries并在2.6上添加值的最快方法

我有一个字典列表,我想组合成一个字典,并添加列表中每个字典的值.例如:

ds = [{1: 1, 2: 0, 3: 0}, {1: 2, 2: 1, 3: 0}, {1: 3, 2: 2, 3: 1, 4: 5}]
Run Code Online (Sandbox Code Playgroud)

最终结果应该是单个词典:

merged = {1: 6, 2: 3, 3: 1, 4: 5}
Run Code Online (Sandbox Code Playgroud)

我对性能很感兴趣,我正在寻找能够将n-dictionaries列表合并到一个字典中并对值进行求和的最快实现.一个明显的实现是:

from collections import defaultdict

merged = defaultdict(int)

for d in ds:
    for k, v in d.items():
        merged[k] += v
Run Code Online (Sandbox Code Playgroud)

在Python 2.6中有更快的方法吗?

python python-2.6

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

当净值不是正值时,将两个python词典合并为一个

我有两个python词典,我试图将值加在一起.答案是:是否有任何pythonic方法来组合两个dicts(为两个键中出现的键添加值)?让我一路走来.但是,我的情况是净值可能为零或负值,但我仍然想要最终字典中的值.即使计数器接受负值,它也只会输出一个大于零的值.

from collections import Counter   
A = Counter({'a': 1, 'b': 2, 'c': -3, 'e': 5, 'f': 5})
B = Counter({'b': 3, 'c': 4, 'd': 5, 'e': -5, 'f': -6})
C = A + B
print(C.items())
Run Code Online (Sandbox Code Playgroud)

输出: [('a', 1), ('c', 1), ('b', 5), ('d', 5)]

c = -3 + 4 = 1 是正确的,因此负输入不是问题,但输出中缺少e:0和f:-1

如何执行求和并获得所有值输出?

python dictionary

9
推荐指数
2
解决办法
509
查看次数

Python - 结合两个字典,连接字符串值?

相关:是否有任何pythonic方法来组合两个dicts(添加两个键中出现的键的值)?

我想合并两个字符串:字符串字典,并连接值.以上帖子建议使用collections.Counter,但它不处理字符串连接.

>>> from collections import Counter
>>> a = Counter({'foo':'bar', 'baz':'bazbaz'})
>>> b = Counter({'foo':'baz'})
>>> a + b
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/collections.py", line 569, in __add__
TypeError: cannot concatenate 'str' and 'int' objects
Run Code Online (Sandbox Code Playgroud)

(我的猜测是Counter尝试设置b['baz']为0.)

我想得到一个结果{'foo':'barbaz', 'baz':'bazbaz'}.连接顺序对我来说无关紧要.什么是干净的Pythonic方法呢?

python dictionary

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

添加两个词典中的值

dict1 = {a: 5, b: 7}
dict2 = {a: 3, c: 1}

result {a:8, b:7, c:1}
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到结果?

python algorithm merge dictionary python-3.x

7
推荐指数
2
解决办法
7103
查看次数

用于词典列表的Python集合计数器

我有一个动态增长的数组列表,我想将它们像值一起添加.这是一个例子:

{"something" : [{"one":"200"}, {"three":"400"}, {"one":"100"}, {"two":"800"} ... ]}
Run Code Online (Sandbox Code Playgroud)

我希望能够将列表中的词典加在一起.所以,在这种情况下,对于关键的"某事",结果将是:

["one":400, "three": 400, "two": 800]
Run Code Online (Sandbox Code Playgroud)

或者那种效果.我熟悉Python的集合计数器,但由于"某事"列表包含dicts,它不起作用(除非我遗漏了一些东西).dict也是动态创建的,所以我不能在没有dicts的情况下构建列表.例如:

Counter({'b':3, 'c':4, 'd':5, 'b':2})
Run Code Online (Sandbox Code Playgroud)

通常会工作,但是一旦我尝试添加元素,之前的值将被覆盖.我注意到其他问题如下:

是否有任何pythonic方法来组合两个dicts(为两个键中出现的键添加值)?

列表字典中的项目的Python计数

但同样,列表中的对象是dicts.

python collections dictionary list python-2.7

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

合并字典并添加值

我有几个词典,我想组合,如果一个键在多个词典中,值将被加在一起.例如:

d1 = {1: 10, 2: 20, 3: 30}
d2 = {1: 1, 2: 2, 3: 3}
d3 = {0: 0}

merged = {1: 11, 2: 22, 3: 33, 0: 0}
Run Code Online (Sandbox Code Playgroud)

在Python中执行此操作的最佳方法是什么?我正在看defaultdict并试图找出一些东西.我正在使用Python 2.6.

python

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

具有相同键的两个不同字典的总和值

我有两本词典

first = {'id': 1, 'age': 23}
second = {'id': 4, 'out': 100} 

我想要输出字典

{'id': 5, 'age': 23, 'out':100}

我试过了

>>> dict(first.items() + second.items())
{'age': 23, 'id': 4, 'out': 100}

但我得到的身份是4,但我希望它是5.

python

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