How to convert Counter object to dict?

前端 未结 4 1757
独厮守ぢ
独厮守ぢ 2020-12-29 20:08

Data frame:

pair = collections.defaultdict(collections.Counter)

e.g.

pair = {\'doc1\':  {\'word1\':4, \'word2\':3}, 
               


        
相关标签:
4条回答
  • 2020-12-29 20:32

    Maybe you are looking for:

    >>> from collections import defaultdict
    >>> pair = defaultdict(dict)
    >>> pair[3][2]='hello'
    >>>
    >>> pair
    defaultdict(<type 'dict'>, {3: {2: 'hello'}})
    >>>
    >>> pair[3]
    {2: 'hello'}
    >>> 
    
    0 讨论(0)
  • 2020-12-29 20:45

    The Counter is also a dict. But depend on you need, maybe the follow code is you want.

    new_pair ={}
    for doc, tab in pari.items():
        new_pair[doc] = {}
        for word, freq in tab.items():
            new_pair[doc][word] = freq
    

    the new_pair dict is you want. Good Luck!

    0 讨论(0)
  • 2020-12-29 20:55

    A Counter is already a dict - or, a subclass of it. But, if you really need exactly a dict for some reason, then its a one-liner:

    >>> c = Counter(word1=4, word2=3)
    >>> c
    Counter({'word1': 4, 'word2': 3})
    >>> dict(c)
    {'word1': 4, 'word2': 3}
    

    Any Mapping (anything that behaves like a dictionary) can be passed into dict, and you will get a dict with the same contents. There is no need to iterate over it to construct it yourself.

    This gives you one loop, with one line in the body instead of a nested loop. But any code of the form:

     thing = a new empty collection
     for elem in old_thing:
        Add something to do with elem to thing
    

    Can usually be done in one line using a generator expression or a list, set or dict comprehension. We're building a dict, so a dict comprehension (the Examples section is what you're most interested in) seems likely. I'll leave coming up with it as an exercise for the reader. ;-)

    0 讨论(0)
  • 2020-12-29 20:57
    new_pair = {} # simple dict at the top level
    for doc, tab in testing.form.items():
        for word, freq in tab.items():
            # top-level values is word counters
            new_pair[doc].setdefault(word, Counter()) += freq
    
    0 讨论(0)
提交回复
热议问题