如何在python中将多个”列出的”元组连接成一个元组?

How to join many “listed” tuples into one tuple in Python?

在python中,关于这个问题的答案很少,如何将一个元组列表连接到一个列表中?,如何在python中合并两个元组?,如何在python中合并任意数量的元组?所有的答案都引用了元组列表,所以提供的解决方案对我来说似乎是无用的。

这是我的问题,我有一个包含这样列出的元组的文件:

(1, 5)

(5, 3)

(10, 3)

(5, 4)

(1, 3)

(2, 5)

(1, 5)

我想将它们加入到一个这样的元组中:

((1, 5), (5, 3), (10, 3), (5, 4), (1, 3), (2, 5), (1, 5))

有人能帮我解决这个问题吗?

谢谢


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
a = (1, 5)

b = (5, 3)

c = (10, 3)

d = (5, 4)

e = (1, 3)

f = (2, 5)

g = (1, 5)

tul = (a, b, c, d, e, f, g)

print(tul)

1
tuple(ast.literal_eval(x) for x in my_open_file if x.strip())

我想…


我的问题是:我想知道一个元组在我的"结果"中出现了多少次。所以我这样做了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from collections import Counter
liste = [1,2,3,5,10]
liste2 = [[1,2,3,5,10], [1,2], [1,5,10], [3,5,10], [1,2,5,10]]
for elt in liste2:
    syn = elt # identify each sublist of liste2 as syn
    nTuple = len(syn)   # number of elements in the syn
    for i in liste:
        myTuple = ()
        if synset.count(i): # check if an item of liste is in liste2
        myTuple = (i, nTuple)
        if len(myTuple) == '0': # remove the empty tuples
           del(myTuple)
        else:
            result = [myTuple]
            c = Counter(result)
            for item in c.items():
                print(item)

我得到了这些结果:

((1, 5), 1)

((2, 5), 1)

((3, 5), 1)

((5, 5), 1)

((10, 5), 1)

((1, 2), 1)

((2, 2), 1)

((1, 3), 1)

((5, 3), 1)

((10, 3), 1)

((3, 3), 1)

((5, 3), 1)

((10, 3), 1)

((1, 4), 1)

((2, 4), 1)

((5, 4), 1)

((10, 4), 1)

我希望有一个元组(key,value),其中value=key在'result'中出现的次数,而不是有一些elt n次(例如((5,3),1)和((10,3),1)出现两次。这就是为什么我认为在使用counter之前可以将列出的元组加入到一个元组中。

我想得到这样的结果:

((1, 5), 1)

((2, 5), 1)

((3, 5), 1)

((5, 5), 1)

((10, 5), 1)

((1, 2), 1)

((2, 2), 1)

((1, 3), 1)

((5, 3), 2)

((10, 3), 2)

((3, 3), 1)

((1, 4), 1)

((2, 4), 1)

((5, 4), 1)

((10, 4), 1)

谢谢


链接答案中提到的列表理解也适用于tuple():

1
print tuple((1,2) for x in xrange(0, 10))

在开头去掉"tuple"或"list"将返回一个生成器。

1
print ((1,2) for x in xrange(0, 10))

使用[]而不是()是列表的缩写:

1
print [(1,2) for x in xrange(0, 10)]

for语句的计算返回一个生成器,而关键字或括号告诉python将其解包到该类型中。