-1

私は 2 つのカウンターを持っているので、簡単にするために次のように仮定します。

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

ここで、次のように 2 つのカウンターを連結します。

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

Pythonでそれを行う方法はありますか?

編集1:最初の問題を解決しました。以下は新しい問題です。助けてください:)

上記の結果で、defaultdict に { 'this' : [2,0],'is':[3,2],'what' : [0,3]}) を含める場合、どのような変更が必要になりますか?作る?

4

3 に答える 3

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]})
于 2013-05-02T01:41:21.070 に答える
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]})
于 2013-05-02T01:47:30.063 に答える
1

使用するdefaultdict

from collections import defaultdict
combinedValues = defaultdict(list)
for key in counterA.viewkeys() & counterB.viewkeys():
    combinedValues[key].extend([counterA[key], counterB[key]])
于 2013-05-02T01:41:11.950 に答える