Python – 字典中的自定义元组键求和
有时,在使用Python字典时,我们可能会遇到一个问题,即我们需要对字典元组键的特定索引上的某个键执行值的组求和。这个问题是非常定制的,但可以在围绕数据处理的领域中应用。让我们讨论可以执行此任务的某些方式。
Input :
test_dict = {(‘a’, ‘b’): 14, (‘c’, ‘a’): 16, (‘a’, ‘c’): 67}
K = ‘c’, idx = 1
Output : 16
Input :
test_dict = {(‘a’, ‘b’): 14, (‘c’, ‘a’): 16, (‘a’, ‘c’): 67}
K = ‘c’, idx = 2
Output : 67
方法 #1:使用sum()
+ 生成器表达式
上述功能的组合可以用来解决这个问题。在此,我们使用 sum() 执行求和,并使用生成器表达式执行过滤任务。
# Python3 code to demonstrate working of
# Custom Tuple Key Summation in Dictionary
# Using sum() + generator expression
# initializing dictionary
test_dict = {('a', 'b'): 14, ('c', 'a'): 16, ('a', 'c'): 67, ('b', 'a'): 17}
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
# initializing K
K = 'a'
# initializing index
idx = 1
# Custom Tuple Key Summation in Dictionary
# Using sum() + generator expression
res = sum(val for key, val in test_dict.items() if key[idx - 1] == K)
# printing result
print("The grouped summation : " + str(res))
输出 :
The original dictionary is : {('a', 'b'): 14, ('c', 'a'): 16, ('a', 'c'): 67, ('b', 'a'): 17}
The grouped summation : 81
方法 #2:使用sum() + map() + lambda
上述功能的组合可以用来解决这个问题。在此,我们使用 sum() 执行求和任务,map() + lambda 用于执行条件检查任务。
# Python3 code to demonstrate working of
# Custom Tuple Key Summation in Dictionary
# Using sum() + map() + lambda
# initializing dictionary
test_dict = {('a', 'b'): 14, ('c', 'a'): 16, ('a', 'c'): 67, ('b', 'a'): 17}
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
# initializing K
K = 'a'
# initializing index
idx = 1
# Custom Tuple Key Summation in Dictionary
# Using sum() + map() + lambda
res = sum(map(lambda sub: sub[1], filter(lambda ele: ele[0][idx - 1] == K,
test_dict.items())))
# printing result
print("The grouped summation : " + str(res))
输出 :
The original dictionary is : {('a', 'b'): 14, ('c', 'a'): 16, ('a', 'c'): 67, ('b', 'a'): 17}
The grouped summation : 81