Python 如何添加元组的特定元素
我有: 我需要添加具有相同第一个元素的第二个元素Python 如何添加元组的特定元素,python,list,tuples,Python,List,Tuples,我有: 我需要添加具有相同第一个元素的第二个元素 输出:[(5,3)、(7,5)、(11,1)]这是集合的一个很好的用例。计数器 ([(5,2),(7,2)],[(5,1),(7,3),(11,1)]) 这里的一个缺点是您将丢失输入的顺序。它们似乎是按键排序的,因此您可以只对项目进行排序: from collections import Counter tup = ([(5,2),(7,2)], [(5,1),(7,3),(11,1)]) counts = sum((Counter(dict(
输出:
[(5,3)、(7,5)、(11,1)]
这是集合的一个很好的用例。计数器
([(5,2),(7,2)],[(5,1),(7,3),(11,1)])
这里的一个缺点是您将丢失输入的顺序。它们似乎是按键排序的,因此您可以只对项目进行排序:
from collections import Counter
tup = ([(5,2),(7,2)], [(5,1),(7,3),(11,1)])
counts = sum((Counter(dict(sublist)) for sublist in tup), Counter())
result = list(counts.items())
print(result)
计数器
是一种字典,其目的是保存箱子的“计数”。计数的设计非常巧妙,因此您可以简单地将它们相加(这会将计数“按仓位”相加——如果两个计数器中都没有仓位,则假定缺少的仓位值为0)。因此,这就解释了为什么我们可以在一堆计数器上使用sum
,以获得一个包含所需值的字典。不幸的是,对于此解决方案,计数器
无法通过使用生成2项序列(如正常映射)的iterable来实例化
result = sorted(counts.items())
将使用键(1,2)
和(3,4)
创建一个计数器
——这两个值都是1。如果您使用映射创建它,它确实会按预期工作,但是:
Counter([(1, 2), (3, 4)])
使用键1
和3
(以及值2
和4
)创建计数器。这是集合的一个很好的用例。计数器
([(5,2),(7,2)],[(5,1),(7,3),(11,1)])
这里的一个缺点是您将丢失输入的顺序。它们似乎是按键排序的,因此您可以只对项目进行排序:
from collections import Counter
tup = ([(5,2),(7,2)], [(5,1),(7,3),(11,1)])
counts = sum((Counter(dict(sublist)) for sublist in tup), Counter())
result = list(counts.items())
print(result)
计数器
是一种字典,其目的是保存箱子的“计数”。计数的设计非常巧妙,因此您可以简单地将它们相加(这会将计数“按仓位”相加——如果两个计数器中都没有仓位,则假定缺少的仓位值为0)。因此,这就解释了为什么我们可以在一堆计数器上使用sum
,以获得一个包含所需值的字典。不幸的是,对于此解决方案,计数器
无法通过使用生成2项序列(如正常映射)的iterable来实例化
result = sorted(counts.items())
将使用键(1,2)
和(3,4)
创建一个计数器
——这两个值都是1。如果您使用映射创建它,它确实会按预期工作,但是:
Counter([(1, 2), (3, 4)])
使用键1
和3
(以及值2
和4
)创建一个计数器
。尝试此代码:(暴力,可能是…)
这里采用的方法是循环遍历元组列表并将元组数据存储为字典,其中元组t[0]
中的第一个元素是键
,第二个元素t[1]
是值
迭代后,每次在元组的第一个元素中找到相同的键时,将该值与元组的第二个元素相加。最后,我们将拥有一个字典dt
,其中包含所需的所有键
,值
对。将此字典转换为元组列表dt.items()
,我们就有了输出。试试下面的代码:(蛮力,可能是…)
这里采用的方法是循环遍历元组列表并将元组数据存储为字典,其中元组t[0]
中的第一个元素是键
,第二个元素t[1]
是值
迭代后,每次在元组的第一个元素中找到相同的键时,将该值与元组的第二个元素相加。最后,我们将拥有一个字典dt
,其中包含所需的所有键
,值
对。将此词典转换为元组列表dt.items()
,我们就有了输出。请给我们一个最小的、完整的、可验证的示例,说明您的尝试。请给我们一个最小的、完整的、,您尝试的可验证示例。您能进一步解释吗?@zaolee_-dragon:在答案中更新了解释。您能进一步解释吗?@zaolee_-dragon:在答案中更新了解释。