Можно ли получить двоичный счетчик из Counter() Python

#python #python-3.x #loops #counter #itertools

Вопрос:

Используя Counter() , я хочу выполнить двоичный подсчет переменных в списке. Поэтому вместо того, чтобы подсчитывать количество для каждой переменной, я просто хотел бы иметь Counter() переменную, в которой все значения равны одному.

Итак, для данного списка:

 data = [1,2,3,4,5,62,3,4,5,1]
 

Я хочу, чтобы результат был:

 Counter({1: 1, 2: 1, 3: 1, 4: 1, 5: 1, 62: 1})
 

Вместо:

 Counter({1: 2, 2: 1, 3: 2, 4: 2, 5: 2, 62: 1})
 

Я осознаю, что мог бы пройти через счетчик:

 binary_count = {x: 1 for x in Counter(data)}
 

Однако для этого требуется один раз просмотреть словарь, и мне это кажется ненужным.

Ответ №1:

Это не то Counter , для чего предназначен a, поэтому, что бы вы ни делали, потребуется изменить вывод.

Почему бы просто не не использовать a Counter для начала? Это должно быть тривиально с обычным dict .

Черт возьми, вы даже можете просто использовать dict.fromkeys , так что:

 >>> data = [1,2,3,4,5,62,3,4,5,1]
>>> dict.fromkeys(data, 1)
{1: 1, 2: 1, 3: 1, 4: 1, 5: 1, 62: 1}
 

Комментарии:

1. Спасибо, я не знал об этом dict варианте

2. @Emil Если значения не важны, вы можете даже рассмотреть возможность использования a set , что похоже на диктант без значений.