Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 计算具有相同值的dict_Python_Dictionary - Fatal编程技术网

Python 计算具有相同值的dict

Python 计算具有相同值的dict,python,dictionary,Python,Dictionary,我确实计算了具有相同值的dict,并尝试将结果添加到dict中。但问题是我无法删除重复的dict from collections import defaultdict [ {"project_name": "apollo"}, {"project_name": "apollo"} ] 例如,列表中有两个阿波罗项目。所以我尝试合并具有相同值的dict。并将计数结果添加为新的键值对 预期的产出应该是这样的 [ { "project_name": "apollo",

我确实计算了具有相同值的dict,并尝试将结果添加到dict中。但问题是我无法删除重复的dict

from collections import defaultdict

[
  {"project_name": "apollo"}, 
  {"project_name": "apollo"}
]
例如,列表中有两个阿波罗项目。所以我尝试合并具有相同值的dict。并将计数结果添加为新的键值对

预期的产出应该是这样的

[
  {
    "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"}
]
但结果当然是如下所示

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"}
]

如何管理数量记录和合并

稍微更改了代码并重新构造了结果:

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'}]

您提到了相同的值…但是键是相同的,所以[{foo:bar},{baz:bar}]是否应该产生一个2的结果计数并将其分组在一起?如果是这样,它们应该如何格式化?实际上,我在问题中提到了预期的输出。是的,两个dict都有相同的键值对@这是预期的结果,谢谢你的触摸。帮助很大。但在res-var中,我觉得有点迷茫:它被称为列表理解——谷歌向你展示了很多关于它的教程: