【发布时间】:2018-07-05 07:39:19
【问题描述】:
我有一个如下的元组列表。元组本身就是一个嵌套元组,里面有 3 个子元素(元组)。
[(('a', 'apple'), ('b', 'mango'), ('c', 'grapes')),
(('a', 'apple'), ('b', 'mango'), ('c', 'grapes')),
(('e', 'apple'), ('b', 'mango'), ('c', 'grapes')),
(('a', 'apple'), ('d', 'mango'), ('c', 'peach')),
(('e', 'apple'), ('d', 'mango'), ('f', 'grapes')),
(('f', 'grapes'), ('e', 'apple'), ('d', 'mango')),
(('f', 'peach'), ('e', 'apple'), ('e', 'mango')),
(('f', 'grapes'), ('c', 'apple'), ('d', 'mango')),
(('e', 'apple'), ('f', 'grapes'), ('d', 'mango')),
(('a', 'apple'), ('c', 'grapes'), ('b', 'mango')),
]
我想通过匹配其中两个元素的位置来对这些元组进行分组,即。元组中的苹果和芒果(预先确定并已知)!
期望的输出:
[
# apple and mango at positions 1 and 2.
[(('a', 'apple'), ('b', 'mango'), ('c', 'grapes')),
(('a', 'apple'), ('b', 'mango'), ('c', 'grapes')),
(('e', 'apple'), ('b', 'mango'), ('c', 'grapes')),
(('a', 'apple'), ('d', 'mango'), ('c', 'peach')),
(('e', 'apple'), ('d', 'mango'), ('f', 'grapes'))],
# apple and mango at positions 2 and 3.
[(('f', 'grapes'), ('e', 'apple'), ('d', 'mango')),
(('f', 'peach'), ('e', 'apple'), ('e', 'mango')),
(('f', 'grapes'), ('c', 'apple'), ('d', 'mango'))],
# apple and mango at positions 1 and 3.
[(('e', 'apple'), ('f', 'grapes'), ('d', 'mango')),
(('a', 'apple'), ('c', 'grapes'), ('b', 'mango'))]
]
我尝试使用Counter 并检查了其他一些示例,但无法成功关闭所需的输出。因此,任何帮助或指点将不胜感激。
【问题讨论】:
-
如果你有两个元组,其中
apple和mango像(('a', 'apple'), ('m', 'mango'))和(('a', 'apple'), ('m', 'mango'))和(('m', 'mango'), ('a', 'apple'))这样交换,这两个应该组合在一起吗? -
那么它们应该放在不同的组中,因为 apple 和 mango 在第一个元组中的位置是 1 和 2,而在第二个元组中是 2 和 1 !
标签: python list group-by grouping itertools