有没有一种使用字典映射更新字典并组合它们的值的好方法?
例如:
input = {"Puppy": 1, "Woof": 3, "Meow": 4, "Kitten": 6}
simplified_dict_map = {
"Puppy" : "Dogs",
"Woof" : "Dogs",
"Meow" : "Cats",
"Kitten" : "Cats",
}
预期输出:
result = {"Dogs": 4, "Cats": 10}
答案 0 :(得分:2)
defaultdict
可以简化此操作:
import collections
import json
data_in = {"Puppy": 1, "Woof": 3, "Meow": 4, "Kitten": 6}
simplified_dict_map = {"Puppy" : "Dogs", "Woof" : "Dogs", "Meow" : "Cats", "Kitten" : "Cats"}
results = collections.defaultdict(int)
for key, value in data_in.items():
results[simplified_dict_map[key]] += value
print(json.dumps(results, indent=2))
应该给你:
{
"Dogs": 4,
"Cats": 10
}
答案 1 :(得分:1)
只需使用 for 循环!
result = {}
for key, value in simplified_dict_map.items():
if key in input:
if value not in result:
result[value] = 0
result[value] += input[key]
print(result) # {'Dogs': 4, 'Cats': 10}
答案 2 :(得分:1)
您可以使用collections.defaultdict
:
from collections import defaultdict
result = defaultdict(int)
for key, value in input.items():
result[simplified_dict_map[key]] += value
答案 3 :(得分:1)
这样的事情应该可以工作:
keys = list(input.keys())
result = {}
for k in keys:
if simplified_dict_map[k] in list(result.keys()):
result[simplified_dict_map[k]]+=input[k]
else:
result[simplified_dict_map[k]]=input[k]
答案 4 :(得分:1)
solution = {}
for k1, v1 in input_dict.items():
for k2, v2, in simplified_dict_map.items():
if k1 == k2:
if v2 in solution.keys():
solution[v2] = solution[v2] + v1
else:
solution[v2] = v1
print(solution)