试图将我的头脑(我的感觉)缠绕在一起是一种过于复杂的方式,无法表示项目之间的关系
mappings = [{'switches': ['switch1', 'switch2'], 'relationships': [{'compute_name': 'compute001', 'servers': ['server1', 'server2']}]},
{'switches': ['switch1', 'switch2'], 'relationships': [{'compute_name': 'compute002', 'servers': ['server3', 'server4']}]},
{'switches': ['switch3', 'switch4'], 'relationships': [{'compute_name': 'compute003', 'servers': ['server5', 'server6']}]},
{'switches': ['switch3', 'switch4'], 'relationships': [{'compute_name': 'compute004', 'servers': ['server7', 'server8', 'server9']}]},
{'switches': ['switch5', 'switch6'], 'relationships': [{'compute_name': 'compute005', 'servers': ['server10', 'server11', 'server12']}]},
{'switches': ['switch5', 'switch6'], 'relationships': [{'compute_name': 'compute006', 'servers': ['server13', 'server14', 'server15', 'server16']}]}]
如您所见,这是一个dict列表,其中的值有时是另一个dict列表
我遇到的问题是,起始数据包含“重复项”。例如,如果查看“switches”的键值,可以看到保存“switch1”+“switch2”的列表出现两次。它是有效的,因为关系数据是唯一的
我想找到一种方法,将这条格言转换为如下内容:
end_mapping = [{'switches': ['switch1', 'switch2'], 'relationships': [{'compute_name': 'compute001', 'servers': ['server1', 'server2']},
{'compute_name': 'compute002', 'servers': ['server3', 'server4']}]},
{'switches': ['switch3', 'switch4'], 'relationships': [{'compute_name': 'compute003', 'servers': ['server5', 'server6']},
{'compute_name': 'compute004', 'servers': ['server7', 'server8', 'server9']}]},
{'switches': ['switch5', 'switch6'], 'relationships': [{'compute_name': 'compute005', 'servers': ['server10', 'server11', 'server12']},
{'compute_name': 'compute006', 'servers': ['server13', 'server14', 'server15', 'server16']}]}
]
在这个数据集中,开关键值是唯一的,我已经“合并”了关系字典
我一直在绞尽脑汁想这个问题,但到目前为止还没有找到办法
我的出发点是:
new_list_of_dict = []
for mapping_dict_a in mappings:
for mapping_dict_b in mappings:
if set(mapping_dict_b['switches']) == set(mapping_dict_a['switches']):
same = True
mapping_dict_a['relationships'].append(mapping_dict_b['relationships'])
new_list_of_dict.append(mapping_dict_a)
break
else:
same = False
print('NOT SAME!')
但是到目前为止它还不起作用(我肯定这是错误的;)-最终我要么得到一个无限循环,要么最终得到的数据太多
有什么建议吗
谢谢
嘿,所以我想出了一些应该有效的方法,尽管这是一个黑客。让我知道进展如何
unique_mapping
应导致:下面是一种使用^{} &;为什么}
frozenset
不set
参考这篇文章^{相关问题 更多 >
编程相关推荐