【发布时间】:2019-05-15 19:51:23
【问题描述】:
所以,我得到了一个充满字典的列表,其中我有两个名字(name00 和 name01)。这些是链接集群的名称,并且总是有所有可用的组合。可以从 2 个或更多集群创建组合,并且可以在结果变量中提供更多组合。
在这个例子中,我链接了具有 3 个不同名称 (1,2,3) 和 2 个不同名称 (4,5) 的集群,但它可以更多。
我需要过滤结果,所以我只得到唯一的组合(name00 和 name01 两种方式)并且只用于其中一个集群。例如,如果选择test1作为main,我们可以丢弃示例中的test2-test3组合。
我希望这个例子能说明问题。
results = [
{ 'name00': 'test1', 'name01': 'test2' },
{ 'name00': 'test1', 'name01': 'test3' },
{ 'name00': 'test2', 'name01': 'test1' },
{ 'name00': 'test2', 'name01': 'test3' },
{ 'name00': 'test3', 'name01': 'test1' },
{ 'name00': 'test3', 'name01': 'test2' },
{ 'name00': 'test4', 'name01': 'test5' },
{ 'name00': 'test5', 'name01': 'test4' }
]
# Desired result
results = [
{ 'name00': 'test1', 'name01': 'test2' },
{ 'name00': 'test1', 'name01': 'test3' },
{ 'name00': 'test4', 'name01': 'test5' }
]
【问题讨论】:
-
这不是很清楚。您是否保证将包括所有
n!可能性?如果不是,删除组合的必要条件是什么,就像您对 2-3 所做的那样。如果集群是 1234,那么期望的输出是什么? -
为什么要以 dict 格式处理?我认为简单的解决方案是制作一组集群闭包,然后从中简单地生成 MST(最小生成树)。
-
@Prune 如果它是 1234 的所有组合,那么所需的输出是 12、13、14 不幸的是,我只是在处理脚本中传递的数据。我可以控制格式,但必须手动转换。
-
我对完整性仍有疑问。例如,如果 7-8-9 是一个集群,我们会在给定的 dict 中拥有所有 6 对吗?
-
@Prune yes, 78, 79, 87, 89, 97, 98 结果应该是 78, 79 (或者 87, 89 或者 97, 98,哪个是真的没关系被选为“主要”)
标签: python python-2.7 list dictionary