【发布时间】:2013-09-12 05:04:36
【问题描述】:
我有一个元组的输入列表,其条目是:
input_1 = [('v1',['f1','f2','f3']),('v2',['f1','f2','f4']),('v3',['f1','f2','f4'])]
^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^
我想知道是否有办法获取包含“组”的元组列表,如下所示:
output_1 = [(['f1','f2'],['v1','v2','v3']) , (['f3'],['v1']), (['f4'],['v2','v3'])]
如果信息不足,其他输入/输出可能是:
input_2 = [('v1',['f1']),('v2',['f2','f3']),('v3',['f4'])]
output_2 = [(['f1'],['v1']) , (['f2','f3'],['v2']), (['f4'],['v3'])]
或
input_3 = [('v1',['f1','f2']),('v2',['f1','f2']),('v3',['f3']),('v4',['f1','f2'])]
^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^
output_3 = [(['f1','f2'],['v1','v2','v4']) , (['f3'],['v3'])]
我认为可能有一种方法可以通过实现字典来实现这一点,但我是 Python 新手,我无法从我看到的示例中弄清楚如何做到这一点:
Grouping integers by set membership in Python
Make sure all dicts in a list have the same keys
我想我可以通过一堆 for 循环低效地做到这一点,但是有没有 Pythonic 或干净的替代方案?抱歉,如果这个问题没有很好地提出,但感谢您的任何意见。
【问题讨论】:
-
棘手。您期望
[('v1'),['f1','f2','f3']),('v2',['f2','f3','f4'])]或[('v1'),['f1','f2','f3']),('v2',['f1','f4','f3'])]的输出是什么?[('v1'),['f1','f2','f3']),('v2',['f2','f3','f4']),('v3',['f1','f2','f4'])]呢? -
@TimPietzcker,我希望:[('f1',['v1']),(['f2','f3'],['v1','v2']), (['f4'],['v2'])] 第一个...
-
对于第二个,假设您的意思是:[(['v1'],['f1','f2','f3']),('v2',['f1', 'f4','f3'])],输出应该是:[(['f1','f3'],['v1','v2']),(['f2'],['v1' ]),(['f4'],['v2'])]。抱歉,如果我对输出元组中的第一个元素是列表还是字符串不一致,它总是可以是列表。
标签: python list key set tuples