【问题标题】:How to sum tuples? Because original sum concatenates them如何对元组求和?因为原始总和将它们连接起来
【发布时间】:2020-08-24 19:09:38
【问题描述】:

我有一个很大的字典,我正在其中扫描一个 API,并根据曲棍球比赛中的投篮是否为进球来添加值。这是我现在的代码...

for key in contents['liveData']['plays']['allPlays']:
        # for plays in key['result']['event']:
            # print(key)
        if (key['result']['event'] == "Shot"):
            #print(key['result']['event'])
            scoordinates = (key['coordinates']['x'], key['coordinates']['y'])
            if scoordinates not in shots:
                shots[scoordinates] = (1, 0)
            else:
                shots[scoordinates] += (1, 0)
        if (key['result']['event'] == "Goal"):
            #print(key['result']['event'])
            gcoordinates = (key['coordinates']['x'], key['coordinates']['y'])
            if gcoordinates not in shots:
                shots[gcoordinates] = (1, 1)
            else:
                shots[gcoordinates] += (1, 1) 

我试图通过使用括号将两个值添加到字典中,但这不起作用,因为只要有重复的坐标拍摄,表格就会添加这样的值 (1,0,1,1) 而不是做(2,1)。这可能吗?我在想这里可能有一个简单的格式修复,但我不完全确定。

【问题讨论】:

  • 所以你真正要问的是元组的元素相加。

标签: python api dictionary for-loop key


【解决方案1】:

您可以使用 sum 代替 +=:

a = tuple(map(sum, zip(a, b)))

所以对于这种情况使用:

shots[gcoordinates] = tuple(map(sum, zip((1, 1), shots[gcoordinates])))

【讨论】:

  • 有什么办法可以使另一列等于投篮数(第一个数字)除以进球数(第二个数字)?
【解决方案2】:

使用以下函数对元组求和:

import operator
def sum_tuples(tuple_1, tuple_2):
    return tuple(map(operator.add, tuple_1, tuple_2))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-07
    • 2022-11-19
    • 2023-03-28
    • 2018-09-30
    • 1970-01-01
    相关资源
    最近更新 更多