当键值对的值小于字典的字典中的另一对值时,删除键值对

  • 本文关键字:字典 键值对 删除 小于 python dictionary
  • 更新时间 :
  • 英文 :


当键和值对的值小于字典的字典中的另一对时,我想删除它们。假设我有一个字典的字典,如下所示:

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]

相关内容

  • 没有找到相关文章

最新更新