我有一组嵌套的元组:
('id', ('name', ('name_float_fml',)), ('user', ('email',)), ('user', ('last_login',)))
我想将具有类似前缀的列表组合在一起,结果是:
^{pr2}$下面是另一个例子:
(('baz', ('bing', ('fizz', 'frozz', ('frazz', ('fry', 'bleep', 'blop'))))), ('baz', ('zap', ('zang',))), 'foo', 'bar')
将合并为:
(('baz', (('bing', ('fizz', 'frozz', ('frazz', ('fry', 'bleep', 'blop')))), ('zap', ('zang')))), 'foo', 'bar')
这些用于存储从根到树叶的路径:
('baz' ('bing' ('fizz,)))
('baz' ('zap', ('zang',)))
('baz', ('bing', ('frazz', ('blop,))))
我想合并树叶通过相同路径到达的元素。我希望这能提供一些澄清。在
我已经编写了一些代码来实现这一点,但它很难看、冗长,而且可能很脆弱。有没有一些通用的、简明的和/或有效的方法来做到这一点?我想可能有某种我不知道的魔法能提供一些优雅的解决方案。在
注意:我使用的是Python2.4
以下是一个适用于您发布的示例的版本:
编辑3:更新了合著的版本,该版本适用于两个示例,并包含了您的限制,即它只需考虑合并元组/列表中包含两个项的项。这还可以防止合并项的额外展平。在
下面是一个用于执行此操作的递归函数:
下面是一个使用
itertools.groupby
的解决方案:对于比问题中给出的更复杂的示例,此过程的递归应用可能是可能的。在
相关问题 更多 >
编程相关推荐