首页 > 解决方案 > Python函数将字符串附加到具有变量名的列表中

问题描述

我想将值附加到变量 s_stat、f_stat 和 stat(例如对于 stats_players(pass),变量应该是 s_pass、f_pass 和 pass)。它给了我未定义 s_stat 的错误。可能不会将变量检测为 s_pass。

功能

def stats_players(stat,player_id):
a = {}
b = {}
if stat != "Start" and stat != "FormationChange" :
    print(stat)
    for js in data_events[str(stat)]:
        icdType = js["playerId"]
        if icdType in a:
            a[icdType].append(js)
        else:
            a[icdType] = [js]
        
    data = json.dumps(a)
    data = json.loads(data)
    if str(player_id) in data == True:
        for js in data[str(player_id)]:
            icdType = js["outcomeType"]["displayName"]
            if icdType in b:
                b[icdType].append(js)
            else:
                b[icdType] = [js]   
        data = json.dumps(b)
        data = json.loads(data)
        if  "Successful" in data != "False":
            suc = len(data["Successful"])
            s_stat.append(len(data["Successful"]))
        else:
            suc = 0
            s_stat.append("0")
        if  "Unsuccessful" in data != "False":
            fail  = len(data["Unsuccessful"])
            f_stat.append(len(data["Unsuccessful"]))
        else:
            fail = 0
            f_stat.append("0")
        Pass.append(suc+fail)
    else:
        suc = 0
        fail = 0
        Pass.append(suc+fail)
        s_stat.append(suc)
        s_stat.append(fail)

代码

Pass = []
f_Pass = []
s_Pass = []

stats_players("Pass",player_id)

错误

Traceback (most recent call last):
File "test.py", line 446, in <module>
stats_players("Pass",player_id)
File "test.py", line 98, in stats_players
s_stat.append(suc)
NameError: name 's_stat' is not defined

标签: python

解决方案


您需要首先声明 s_stat 是一个列表。s_stat = [] 这会让编译器知道 s_stat 是一个列表


推荐阅读