当键和值对的值小于字典的字典中的另一对时,我想删除它们。假设我有一个字典的字典,如下所示:
ex_dict = {'C1': {'I1': 1, 'I2': 1.5, 'I3': 2}, 'C2': {'I2': 2, 'I3': 3, 'I4': 3.5}, 'C3': {'I4': 2, 'I5': 4, 'I6': 3}, 'C4': {'I1': 2, 'I3': 3.5, 'I6': 5}, 'C5': {'I7': 1, 'I8': 1.5, 'I9': 2}}
我希望期望的输出如下:
new_ex_dict = {'C1': {}, 'C2': {'I2': 2, 'I4': 3.5}, 'C3': {'I5': 4}, 'C4': {'I1': 2, 'I3': 3.5, 'I6': 5}, 'C5': {'I7': 1, 'I8': 1.5, 'I9': 2}}
我怎样才能有效地做到这一点?如有任何帮助,我将不胜感激。
这是我的快速解决方案
ex_dict = {'C1': {'I1': 1, 'I2': 1.5, 'I3': 2}, 'C2': {'I2': 2, 'I3': 3, 'I4': 3.5}, 'C3': {'I4': 2, 'I5': 4, 'I6': 3}, 'C4': {'I1': 2, 'I3': 3.5, 'I6': 5}, 'C5': {'I7': 1, 'I8': 1.5, 'I9': 2}}
temp_dict = {}
new_ex_dict = {}
for main_key in ex_dict:
for k, v in ex_dict[main_key].items():
temp_dict.setdefault(k, []).append((main_key, v))
for k, v in temp_dict.items():
max_value = max(v, key=lambda x: x[1])
main_key = max_value[0]
new_ex_dict.setdefault(main_key, {})[k] = max_value[1]