📜  Python – 元组到字典求和转换

📅  最后修改于: 2022-05-13 01:55:44.241000             🧑  作者: Mango

Python – 元组到字典求和转换

有时,在使用Python元组时,我们可能会遇到元组中存在数据点的问题,我们需要在对相似键进行求和后将它们转换为字典。这种操作也可以扩展到最大值、最小值或乘积。这可能发生在数据域中。让我们讨论可以执行此任务的某些方式。

方法 #1:使用循环 + defaultdict()
上述功能的组合可以用来解决这个问题。在此,我们使用 defaultdict() 用整数初始化计数器字典,并使用循环来迭代所有数据点。

# Python3 code to demonstrate working of 
# Tuple to Dictionary Summation conversion
# Using defaultdict() + loop
from collections import defaultdict
  
# initializing list
test_list = [(7, 8), (5, 6), (7, 2), (6, 8), (5, 10)]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Tuple to Dictionary Summation conversion
# Using defaultdict() + loop
res = defaultdict(int)
for sub in test_list:
    res[sub[0]] += sub[1]
  
# printing result 
print("The summation tuple dictionary : " + str(dict(res))) 
输出 :
The original list is : [(7, 8), (5, 6), (7, 2), (6, 8), (5, 10)]
The summation tuple dictionary : {7: 10, 5: 16, 6: 8}

方法 #2:使用dictionary comprehension + sum() + groupby()
上述功能的组合可以用来解决这个问题。在此,我们使用 sum() 执行求和任务,groupby() 用于对相似元素进行分组以进行进一步计算。

# Python3 code to demonstrate working of 
# Tuple to Dictionary Summation conversion
# Using dictionary comprehension + sum() + groupby()
from itertools import groupby
  
# initializing list
test_list = [(7, 8), (5, 6), (7, 2), (6, 8), (5, 10)]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Tuple to Dictionary Summation conversion
# Using dictionary comprehension + sum() + groupby()
fnc = lambda ele: ele[0]
res = {key: sum(sub[1] for sub in val) for key, val in groupby(
                       sorted(test_list, key = fnc), key = fnc)}
  
# printing result 
print("The summation tuple dictionary : " + str(res)) 
输出 :
The original list is : [(7, 8), (5, 6), (7, 2), (6, 8), (5, 10)]
The summation tuple dictionary : {7: 10, 5: 16, 6: 8}