与元组Python联合

nan*_*ncy 8 python union tuples

import itertools

list_with_tuples=[(1,), (2,), (3,)]
pairs = itertools.combinations(list_with_tuples, 2)
for pair in pairs:
   print(pair)
Run Code Online (Sandbox Code Playgroud)

所以对的结果是:

 ((1,),(2,)) ,

 ((1,),(3)) ,

 ((2,),(3,))
Run Code Online (Sandbox Code Playgroud)

我如何结合他们?工会结束后,我想做一本字典:

di={ (1,2): value1, (1,3): value2, (2,3): value3 }
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

wim*_*wim 10

在python中"联合"元组的一种方法是简单地添加它们:

>>> (1,) + (2,)
(1, 2)
Run Code Online (Sandbox Code Playgroud)

所以你可以修改你的例子来添加:

import itertools

list_with_tuples=[(1,), (2,), (3,)]
pairs = itertools.combinations(list_with_tuples, 2)
for left, right in pairs:
     print(left + right)
Run Code Online (Sandbox Code Playgroud)

输出:

(1, 2)
(1, 3)
(2, 3)
Run Code Online (Sandbox Code Playgroud)

如果需要添加n元组,而不仅仅是其中的2个,则可以使用sum并指定空元组的初始值()作为第二个参数.

或者,正如Kevin在评论中提到的那样,你可以通过使用a的输出来构建一个新的元组,itertools.chain如果n很大则可能会更高效.