我发现自己在一个由元组列表字典组成的复杂数据结构中处于尴尬的境地。问题是字典中的多个键有公共元组元素,我想把公共元素过滤成非冗余元组元素的类别。我希望这些数据的样本能提供问题的要点
test = {'S37_1': [('L26_1', '100.000'), ('S13_1', '100.000'), ('L29_1', '100.000'), ('S37_1', '100.000'), ('S38_1', '99.910'), ('L25_1', '99.910'), ('L16_1', '99.888')],\
'L29_1': [('L26_1', '100.000'), ('S13_1', '100.000'), ('L29_1', '100.000'), ('S37_1', '100.000'), ('S38_1', '99.910'), ('L25_1', '99.910'), ('L16_1', '99.888')], \
'L25_2': [('S38_3', '100.000'), ('L16_4', '100.000'), ('L25_2', '100.000'), ('L29_3', '99.889'), ('L26_2', '99.783'), ('S13_2', '99.777'), ('S37_2', '99.464')], \
'S38_3': [('S38_3', '100.000'), ('L16_4', '100.000'), ('L25_2', '100.000'), ('L29_3', '99.889'), ('L26_2', '99.783'), ('S13_2', '99.777'), ('S37_2', '99.464')]}
预期结果如下:
test = {'S37_1': [('L26_1', '100.000'), ('S13_1', '100.000'), ('L29_1', '100.000'), ('S37_1', '100.000'), ('S38_1', '99.910'), ('L25_1', '99.910'), ('L16_1', '99.888')],\
'L25_2': [('S38_3', '100.000'), ('L16_4', '100.000'), ('L25_2', '100.000'), ('L29_3', '99.889'), ('L26_2', '99.783'), ('S13_2', '99.777'), ('S37_2', '99.464')]}
下面的代码生成了一组非冗余的元组列表,没有将它们划分为类别,因此我希望您能帮助我修改它,以便过滤“test”字典并删除所有不提供新信息的键
seen = set()
keep = []
for elem, tp_elms in test.items():
for hit, stat in tp_elms:
if hit in seen:
print(hit,stat)
else:
seen.add(hit)
keep.append((hit,stat))
非常感谢
您只需要稍微修改代码,我们在其中循环所有元素,而不添加已经看到所有元素的条目
相关问题 更多 >
编程相关推荐