这将创建一个空字典,其键来自结果中的唯一元素,并将所有默认值初始化为0。
_dict = dict.fromkeys(set([e["name"] for e in result]), 0)
output: {'b': 0, 'a': 0}
这将计算结果中字典中存在的键的元素数量。
[_dict.update({element["name"]: _dict[element["name"]]+1}) for element in result]
由于您的“数字”对整个列表都相同,
[{"name": key, "number": 1, "count": _dict[key]} for key in _dict.keys()]
output:[{'name': 'b', 'number': 1, 'count': 1},
{'name': 'a', 'number': 1, 'count': 2}]
如果所有键的数字不相同,则从结果列表中删除所有重复的字典。
no_dups = [i for n, i in enumerate(result) if i not in result[n + 1:]]
output: [{'name': 'b', 'number': 1}, {'name': 'a', 'number': 1}]
创建另一个字典,其值为它们的数字:
create another dict with values as their number :
new = {}
[new.update({i["name"]: i["number"]}) for i in b]
重复上一步,就像这样。
[{"name": key, "number": new[key], "count": _dict[key]} for key in _dict.keys()]