Считать дикты, которые имеют одинаковую ценность - PullRequest
0 голосов
/ 20 февраля 2020

Я посчитал дикты, которые имеют одинаковое значение, и попытался добавить результат в dict. Но проблема в том, что я не смог удалить дублирующиеся диктовки.

from collections import defaultdict

[
  {"project_name": "apollo"}, 
  {"project_name": "apollo"}
]

Например, в list есть два проекта apollo. Поэтому я пытаюсь объединить слова, которые имеют ту же ценность. И добавьте подсчитанный результат как новую пару ключ-значение.

ожидаемый результат будет похож.

[
  {
    "project_name": "apollo", 
    "count": "2"
  }
]

Я пробовал что-то вроде ниже.

d = defaultdict(int)
for item in conversions:
    key = item['project_name']
    d[key] += 1
    dic["count"] = d[key]

Но результат (конечно) получился как ниже.

[
  {"project_name": "apollo", "count": "1"},
  {"project_name": "apollo", "count": "2"}
]

Как умудряются считать количество диктов и сливаться.

1 Ответ

1 голос
/ 20 февраля 2020

Немного изменил код и реструктурировал результат:

from collections import defaultdict


conversions = [
  {"project_name": "apollo"}, 
  {"project_name": "apollo"},
  {"project_name": "foo"},
  {"project_name": "apollo"}
]

d = defaultdict(int)

for item in conversions:
    key = item['project_name']
    d[key] += 1

res = [{"project_name": k, "count": v} for (k, v) in d.items()]
print(res)

Вывод:

[{'count': 3, 'project_name': 'apollo'}, {'count': 1, 'project_name': 'foo'}]
...