Можете ли вы сделать счетчик без выписки «Счетчик»?

Поэтому, когда я печатаю счетчик ( from collections import Counter ) в файл, я всегда получаю это литерал Counter ({'Foo': 12})

Так или иначе, чтобы счетчик не выписывался так буквально? Поэтому вместо « Counter({'Foo' : 12}) вместо « Counter({'Foo' : 12}) следует написать {'Foo' : 12} .

Да, это придирчиво, но после этого я устал от этого.

  • Быстрый способ подсчета ненулевых битов в натуральном числе
  • Не удалось составить список списков назначенного размера
  • Как подсчитать количество файлов в каталоге с помощью Python
  • Суммируя содержимое двух коллекций. ОбъектыCounter ()
  • Google AppEngine: как подсчитывать записи базы данных за пределами 1000?
  • python - как получить число активных потоков, запущенных определенным классом?
  • Добавление счетчиков удаляет ключи
  • Как я могу получить взвешенный случайный выбор из класса Counter в Python?
  • 4 Solutions collect form web for “Можете ли вы сделать счетчик без выписки «Счетчик»?”

    Вы можете просто передать Counter :

     counter = collections.Counter(...) counter = dict(counter) 

     In [56]: import collections In [57]: counter = collections.Counter(['Foo']*12) In [58]: counter Out[58]: Counter({'Foo': 12}) In [59]: counter = dict(counter) In [60]: counter Out[60]: {'Foo': 12} 

    Мне лучше нравится идея Дж. Бернардо, хотя:

     In [66]: import json In [67]: counter Out[67]: Counter({'Foo': 12}) In [68]: json.dumps(counter) Out[68]: '{"Foo": 12}' 

    Таким образом, вы не теряете специальные методы counter , такие как most_common , и вам не требуется дополнительная временная память, в то время как Python строит dict из Counter .

    Как насчет того, чтобы форматировать его в форму, которую вы хотите?

     >>> import collections >>> data = [1, 2, 3, 3, 2, 1, 1, 1, 10, 0] >>> c = collections.Counter(data) >>> '{' + ','.join("'{}':{}".format(k, v) for k, v in c.iteritems()) + '}' "{'0':1,'1':4,'2':2,'3':2,'10':1}" 

    Ну, это не очень элегантно, но вы можете просто бросить его как строку и отрезать первые 8 и последние 1 буквы:

     x = Counter({'Foo': 12}) print str(x)[8:-1] 

    Вы можете изменить метод __str__ класса счетчика, перейдя в исходный код модуля коллекций, но я бы не сказал, что это постоянно его модифицирует. Может быть, просто изменить то, что вы печатаете, было бы более выгодным?

    Python - лучший язык программирования в мире.