2 回答

TA貢獻1785條經驗 獲得超4個贊
您可以使用dict.setdefault:
result = {}
for d in result_data.values():
for k, v in d.items():
result[k][v] = result.setdefault(k, {}).get(v, 0) + 1
result 變成:
{'GET': {'GREEN': 2}, 'POST': {'GREEN': 2}, 'Query': {'GREEN': 1, 'RED': 1}, 'Cookie': {'RED': 2}, 'String': {'RED': 2}, 'Body': {'BLUE': 2}}

TA貢獻1943條經驗 獲得超7個贊
您可以使用collections.defaultdict:
from collections import Counter, defaultdict
d = {'uhawjjh4': {'GET': 'GREEN', 'POST': 'GREEN', 'Query': 'GREEN', 'Cookie': 'RED', 'String': 'RED', 'Body': 'BLUE'}, 'bcfp19sg': {'GET': 'GREEN', 'POST': 'GREEN', 'Query': 'RED', 'Cookie': 'RED', 'String': 'RED', 'Body': 'BLUE'}}
new_d = defaultdict(list)
result = [i for b in d.values() for i in b.items()]
for a, b in result:
new_d[a].append(b)
new_result = {a:dict(Counter(b)) for a, b in new_d.items()}
輸出:
{'GET': {'GREEN': 2}, 'POST': {'GREEN': 2}, 'Query': {'GREEN': 1, 'RED': 1}, 'Cookie': {'RED': 2}, 'String': {'RED': 2}, 'Body': {'BLUE': 2}}
添加回答
舉報