可以使用Python编程语言来解决这个问题。示例代码如下:
from itertools import groupby
def combine_dicts(list_of_dicts):
combined_dict = {}
for key, group in groupby(sorted(list_of_dicts, key=lambda x: x['key']), lambda x: x['key']):
temp_dict = {}
for item in group:
for k, v in item.items():
if k != 'key' and v not in temp_dict.values():
temp_dict[k] = v
combined_dict[key] = temp_dict
return combined_dict
dict1 = {'key': 'A', 'value1': 'a1', 'value2': 'a2'}
dict2 = {'key': 'A', 'value1': 'a1', 'value2': 'a3'}
dict3 = {'key': 'B', 'value1': 'b1', 'value2': 'b2'}
dict4 = {'key': 'B', 'value1': 'b1', 'value2': 'b3'}
list_of_dicts = [dict1, dict2, dict3, dict4]
combined_dict = combine_dicts(list_of_dicts)
print(combined_dict)
上述代码将字典列表传递给combine_dicts
函数。该函数使用groupby
函数对字典列表进行排序和分组。然后,对于每组,使用temp_dict字典来存储非重复值,并将其添加到combined_dict中。最后,返回一个合并后的字典。运行示例代码输出如下:
{'A': {'value1': 'a1', 'value2': 'a2'}, 'B': {'value1': 'b1', 'value2': 'b2'}}
该输出表示,在输入的列表中,具有“key”键为“A”的字典中仅保留了“value2”键为“a2”的值,同时,具有“key”键为“B”字典中仅保留了“value2”键为“b2”的值,而“value2”键