提取Python中的3元组列表

提取Python中的3元组列表,python,tuples,Python,Tuples,我有一个三元组的列表(x,y,z)()。我想把“相等”的条目提炼成一个。这里相等意味着这对(x,y)在三元组中是相同的。z分量应该相加 你知道怎么用蟒蛇的方式来做吗 e、 g: 应该让步 (0, 1, 3) (0, 3, 2) Thx试试这个: from collections import Counter as c c(your_list) 这将为您提供如下信息: Counter({(4, 4, 1): 20, (0, 1, 1): 9, (0, 0, 1): 8, (5, 5, 1):

我有一个三元组的列表(x,y,z)()。我想把“相等”的条目提炼成一个。这里相等意味着这对(x,y)在三元组中是相同的。z分量应该相加

你知道怎么用蟒蛇的方式来做吗

e、 g:

应该让步

(0, 1, 3)
(0, 3, 2)
Thx

试试这个:

from collections import Counter as c
c(your_list)
这将为您提供如下信息:

Counter({(4, 4, 1): 20, (0, 1, 1): 9, (0, 0, 1): 8, (5, 5, 1): 7, (5, 4, 1): 7, (1, 1, 1): 7, (1, 4, 1): 4, (0, 4, 1): 3, (3, 3, 1): 3, (0, 3, 1): 2, (1, 5, 1): 2, (0, 2, 1): 2, (3, 2, 1): 1, (2, 2, 1): 1, (2, 3, 1): 1, (0, 5, 1): 1})
我相信你能从这里捡到它

试试这个:

from collections import Counter as c
c(your_list)
这将为您提供如下信息:

Counter({(4, 4, 1): 20, (0, 1, 1): 9, (0, 0, 1): 8, (5, 5, 1): 7, (5, 4, 1): 7, (1, 1, 1): 7, (1, 4, 1): 4, (0, 4, 1): 3, (3, 3, 1): 3, (0, 3, 1): 2, (1, 5, 1): 2, (0, 2, 1): 2, (3, 2, 1): 1, (2, 2, 1): 1, (2, 3, 1): 1, (0, 5, 1): 1})
我相信你能从这里捡到它

使用查找唯一的项目,您可以对其进行排序(如果需要):

使用查找唯一的项目,您可以对其进行排序(如果需要):

这就行了!这几乎就像是口头检查你的算法

首先根据规则对元素进行分组,并对z坐标求和以形成新的元组

这就行了!这几乎就像是口头检查你的算法


首先根据规则对元素进行分组,并将z坐标相加形成新的元组。

我将使用
defaultdict


我会使用
defaultdict


无法获取您的定义。。。i==i或i==j或j==i,这是什么意思?你能澄清并解释一下你的例子吗?到目前为止你做了哪些尝试?最好是展示你所做的,人们可以指出需要改进的地方。我不明白你的算法。你能换个说法吗?无法理解你的定义。。。i==i或i==j或j==i,这是什么意思?你能澄清并解释一下你的例子吗?到目前为止你做了哪些尝试?最好是展示你所做的,人们可以指出需要改进的地方。我不明白你的算法。你能换个说法吗?
from itertools import groupby
sorted_list = sorted(your_list) 
# sorting makes tuples with same 'key' next to each other
sum_z = lambda tuples: sum(t[2] for t in tuples)
your_ans = [(k[0], k[1], sum_z(g))
            for k, g in groupby(sorted_list, lambda t: (t[0], t[1]))]
from collections import defaultdict
d = defaultdict(lambda : 0) # initial value 0
for i in list_of_tuples:
    d[i[:2]] += i[2]