2013-05-02 30 views
-1

我有两个柜台跟我,所以让我们假设为了简单:我如何可以连接两个计数器(自定义)

a = "this" : 2 , "is" : 3 
b = "what" : 3 , "is" : 2 

现在我要连接的两个计数器是这样的:

concatenatedCounter = "this" : 2 , "is" : 3,2 , "what" : 3 

有什么办法在Python中做到这一点?

编辑1:解决了第一个问题,以下是新的问题,请帮助:)

在上面的结果,如果我想的defaultdict包含{“这个”:[2,0],'是':[3,2],'what':[0,3]}),我需要做些什么改变?

+1

这是什么都做一个柜台?你是在添加2还是3,还是你试图串接字符串? – Cfreak 2013-05-02 01:38:10

回答

3

使用collections.defaultdict

In [38]: a = {"this" : 2 , "is" : 3} 

In [39]: b = {"what" : 3 , "is" : 2} 

In [40]: from collections import defaultdict 

In [41]: collected_counter=defaultdict(list) 

In [42]: for key,val in a.items(): 
    collected_counter[key].append(val) 
    ....:  

In [43]: for key,val in b.items(): 
    collected_counter[key].append(val) 
    ....:  

In [44]: collected_counter 
Out[44]: defaultdict(<type 'list'>, {'this': [2], 'is': [3, 2], 'what': [3]}) 

更新:

>>> keys=a.viewkeys() | b.viewkeys() 
>>> collected_counter=defaultdict(list) 
>>> for key in keys: 
    collected_counter[key].append(a.get(key,0)) 
...      
>>> for key in keys: 
    collected_counter[key].append(b.get(key,0)) 
...      
>>> collected_counter 
defaultdict(<type 'list'>, {'this': [2, 0], 'is': [3, 2], 'what': [0, 3]}) 
+0

太棒了!谢谢。 – user1795516 2013-05-02 01:56:07

+0

在上面的结果中,如果我想让defaultdict包含{'this':[2,0],'is':[3,2],'what':[0,3]}),我需要什么变化做? – user1795516 2013-05-02 06:54:04

+0

@ user1795516请参阅我的更新解决方案。 – 2013-05-02 07:01:54

1

使用defaultdict

from collections import defaultdict 
combinedValues = defaultdict(list) 
for key in counterA.viewkeys() & counterB.viewkeys(): 
    combinedValues[key].extend([counterA[key], counterB[key]]) 
+0

在上面的结果中,如果我想让defaultdict包含{'this':[2,0],'is':[3,2],'what':[0,3]}),我需要什么changs做? – user1795516 2013-05-02 06:53:25

+0

@ user1795516:请参阅编辑。 – 2013-05-02 13:46:46

2
>>> from collections import defaultdict 
>>> from itertools import chain 
>>> dd = defaultdict(list) 
>>> a = {"this" : 2 , "is" : 3} 
>>> b = {"what" : 3 , "is" : 2} 
>>> for k, v in chain(a.items(), b.items()): 
     dd[k].append(v) 


>>> dd 
defaultdict(<type 'list'>, {'this': [2], 'is': [3, 2], 'what': [3]}) 
+0

不错!正是我需要的! – user1795516 2013-05-02 01:56:24

+0

在上面的结果中,如果我想defaultdict包含{'this':[2,0],'是':[3,2],'what':[0,3]}),我需要什么变化做? – user1795516 2013-05-02 06:51:46

相关问题