Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用字符串搜索变量?/你能在类中搜索变量吗?_Python_Python 3.x_Pandas_Class_For Loop - Fatal编程技术网

Python 如何使用字符串搜索变量?/你能在类中搜索变量吗?

Python 如何使用字符串搜索变量?/你能在类中搜索变量吗?,python,python-3.x,pandas,class,for-loop,Python,Python 3.x,Pandas,Class,For Loop,我从一个文件中获取一个团队的名称,我需要一种方法来找到一个同名的变量,所有团队名称变量都在一个名为team的类下,是否有一种方法来搜索该变量。我不知道使用字典是否更容易。蟒蛇 class team()... Burnley = team("Burnley",[1, 0, 0, 1], True) Southampton = team("Southampton", [1,2,1,0,0,0,1], True) Swansea = team("Sw

我从一个文件中获取一个团队的名称,我需要一种方法来找到一个同名的变量,所有团队名称变量都在一个名为team的类下,是否有一种方法来搜索该变量。我不知道使用字典是否更容易。蟒蛇

class team()...

Burnley = team("Burnley",[1, 0, 0, 1], True)
Southampton = team("Southampton", [1,2,1,0,0,0,1], True)
Swansea = team("Swansea",[1,2,1,1,1,2,1,1,0,0,0,0,0,0,3],True)

df = pd.read_csv("2016-17 testing.csv")
df =df[["Date","HomeTeam","AwayTeam","FTHG","FTAG","FTR"]]

for game in df.iterrows():

    home_team = df["HomeTeam"]
    away_team = df["AwayTeam"]
在这里,我需要搜索主队并找到变量。之所以使用for循环,是因为我们将查看结果列表,并将这些数据用于某些用途。
谢谢

最好的方法是使用字典

teams = {
    'Burnley': team("Burnley",[1, 0, 0, 1], True),
    'Southampton': team("Southampton", [1,2,1,0,0,0,1], True),
    'Swansea': team("Swansea",[1,2,1,1,1,2,1,1,0,0,0,0,0,0,3], True)
}

# and then simply fetch values from it
Burnley = teams['Burnley']

...
for idx, game in df.iterrows():
    home_team_name = game["HomeTeam"]  # Burnley let's assume
    home_team = teams[home_team_name] 
    ...

但是,如果你真的想要问题所要求的,继续阅读

假设我有一个文件,
sample.py

# sample.py
from pprint import pprint

variable = 'some value'
x = 20

pprint(globals())
输出:

$ python3 sample.py 
{'__annotations__': {},
 '__builtins__': <module 'builtins' (built-in)>,
 '__cached__': None,
 '__doc__': None,
 '__file__': 'sample.py',
 '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x7fccad01eb80>,
 '__name__': '__main__',
 '__package__': None,
 '__spec__': None,
 'pprint': <function pprint at 0x7fccacefdf70>,
 'variable': 'some value',
 'x': 20}
Value of variable = some value
Value of x = 20
输出:

$ python3 sample.py 
{'__annotations__': {},
 '__builtins__': <module 'builtins' (built-in)>,
 '__cached__': None,
 '__doc__': None,
 '__file__': 'sample.py',
 '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x7fccad01eb80>,
 '__name__': '__main__',
 '__package__': None,
 '__spec__': None,
 'pprint': <function pprint at 0x7fccacefdf70>,
 'variable': 'some value',
 'x': 20}
Value of variable = some value
Value of x = 20

所以对于你的情况

...

for idx, game in df.iterrows():
    home_team_name = game["HomeTeam"]  # Burnley let's assume
    home_team = globals().get(home_team_name)  # would give you the value of the variable `Burnley` if it exists
    ...

如果您已经阅读了到目前为止的全部答案,作为建议,我想补充一点,即类名应该以大写字母开头<代码>团队:而不是
团队:

最好的方法是使用字典

teams = {
    'Burnley': team("Burnley",[1, 0, 0, 1], True),
    'Southampton': team("Southampton", [1,2,1,0,0,0,1], True),
    'Swansea': team("Swansea",[1,2,1,1,1,2,1,1,0,0,0,0,0,0,3], True)
}

# and then simply fetch values from it
Burnley = teams['Burnley']

...
for idx, game in df.iterrows():
    home_team_name = game["HomeTeam"]  # Burnley let's assume
    home_team = teams[home_team_name] 
    ...

但是,如果你真的想要问题所要求的,继续阅读

假设我有一个文件,
sample.py

# sample.py
from pprint import pprint

variable = 'some value'
x = 20

pprint(globals())
输出:

$ python3 sample.py 
{'__annotations__': {},
 '__builtins__': <module 'builtins' (built-in)>,
 '__cached__': None,
 '__doc__': None,
 '__file__': 'sample.py',
 '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x7fccad01eb80>,
 '__name__': '__main__',
 '__package__': None,
 '__spec__': None,
 'pprint': <function pprint at 0x7fccacefdf70>,
 'variable': 'some value',
 'x': 20}
Value of variable = some value
Value of x = 20
输出:

$ python3 sample.py 
{'__annotations__': {},
 '__builtins__': <module 'builtins' (built-in)>,
 '__cached__': None,
 '__doc__': None,
 '__file__': 'sample.py',
 '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x7fccad01eb80>,
 '__name__': '__main__',
 '__package__': None,
 '__spec__': None,
 'pprint': <function pprint at 0x7fccacefdf70>,
 'variable': 'some value',
 'x': 20}
Value of variable = some value
Value of x = 20

所以对于你的情况

...

for idx, game in df.iterrows():
    home_team_name = game["HomeTeam"]  # Burnley let's assume
    home_team = globals().get(home_team_name)  # would give you the value of the variable `Burnley` if it exists
    ...

如果您已经阅读了到目前为止的全部答案,作为建议,我想补充一点,即类名应该以大写字母开头<代码>团队:而不是
团队:

使用字典将帮助您解决问题。另一种可能的方法是列出所有团队。然后,您可以在此列表中搜索名称与所需名称相等的团队。此外,以大写字母开头类名也是一种良好的做法。因此,它应该被命名为
Team
@MoosaSaadat。这个列表听起来不错,我如何在列表中搜索主队名称?你能列出变量吗??我将改变这一点,我假设您的
team
类有一个
name
属性,该属性存储团队的名称:
team(“Burnley”,“1,0,0,1],True)
。就像这里一样,您正在传递团队名称
“Burnley”
。因此,一旦创建了团队列表,就可以检查
team.name
是否与名称匹配。例如,
teams=[team(“Burnley”[1,0,0,1],True),team(“Southampton”[1,2,1,0,0,0,1],True)]
对于团队中的t:。另一种可能的方法是列出所有团队。然后,您可以在此列表中搜索名称与所需名称相等的团队。此外,以大写字母开头类名也是一种良好的做法。因此,它应该被命名为
Team
@MoosaSaadat。这个列表听起来不错,我如何在列表中搜索主队名称?你能列出变量吗??我将改变这一点,我假设您的
team
类有一个
name
属性,该属性存储团队的名称:
team(“Burnley”,“1,0,0,1],True)
。就像这里一样,您正在传递团队名称
“Burnley”
。因此,一旦创建了团队列表,就可以检查
team.name
是否与名称匹配。例如,
teams=[team(“Burnley”[1,0,0,1],True),team(“Southampton”[1,2,1,0,0,0,1],True)]
对于teams中的t:
如果t.name==“Burnley”:
谢谢你的解释,但当我尝试使用它时,我得到了一个('Series'对象是可变的,因此它们不能散列)错误,我不知道它看起来像什么,就是说,您尝试使用一个Series对象作为字典键。你能显示发生错误的行吗?home\u team=globals().get(home\u team)将
df[“HomeTeam”]
更改为
game[“HomeTeam”]
。这就是我在回答中所做的
df[“HomeTeam”]
将给出一个
pd.Series
对象,据我所知,该对象不是您想要的。我收到另一个错误,TypeError:元组索引必须是整数或切片,而不是str,代码是:df中的游戏。ItErrors():home\u team\u name=game[“HomeTeam”]home\u team=globals().get(home\u team\u name)错误在第2行print(home_team)谢谢你的解释,但是当我尝试使用它时,我得到了一个('Series'对象是可变的,因此它们不能散列)错误,我不知道它看起来像什么,就是,你尝试使用Series对象作为字典键。你能显示发生错误的行吗?home\u team=globals().get(home\u team)将
df[“HomeTeam”]
更改为
game[“HomeTeam”]
。这就是我在回答中所做的
df[“HomeTeam”]
将给出一个
pd.Series
对象,据我所知,该对象不是您想要的。我收到另一个错误,TypeError:元组索引必须是整数或切片,而不是str,代码是:df中的游戏。ItErrors():home\u team\u name=game[“HomeTeam”]home\u team=globals().get(home\u team\u name)错误出现在第2行打印(home_团队)