我正在编写一个python脚本,从.txt文件中的句子中读取玩家姓名和统计数据,然后在字典中更新他们的统计数据,然后输出他们的平均统计数据。我在为同一个播放器分配多个值时遇到问题'键,以及获取其下方的逻辑以正确更新玩家统计信息。 .group部分也给了我麻烦。我怎么能这样做?
import re, sys, os, math
if len(sys.argv) < 2:
sys.exit("Usage: %s filename" % sys.argv[0])
filename = sys.argv[1]
if not os.path.exists(filename):
sys.exit("Error: File '%s' not found" % sys.argv[1])
line_regex = re.compile(r"^(\w+ \w+) batted (\d+) times with (\d+) hits and (\d+) runs")
line = [line.strip() for line in open(filename)]
f = open (filename)
playerStats = {'players': [0, 0, 0]}
for players in playerStats:
player = line.group(1)
atBat = line.group(2)
hit = line.group(3)
if player in playerStats:
playerStats[player][0] += atBat
playerStats[player][1] += hit
if player not in players:
player = line.group(1)
playerStats[player][0] = atBat
playerStats[player][1] = hit
avgs = 0
else:
playerStats[player][0] = player
playerStats[player][0] = atBat
playerStats[player][1] = hit
playerStats[player][2] = 0
for player in players:
avgs[player] = round(float(hits[player])/float(atBats[player]), 3)
print "%s: %.3f" % (player, avgs[player])
追踪(最近一次通话): 文件&#34; ba.py&#34;,第19行,in player = line.group(1) AttributeError:&#39; list&#39;对象没有属性&#39; group&#39;
答案 0 :(得分:3)
你应该改变这个
playerStats = {'players': hits, atBats, avgs}
要
playerStats = {'players': [0, 0, 0]}
后者将值存储为list
,前者不是有效的Python语法。
要修改其中一个值,例如
playerStats[player][1] = 5 # atBat value
您也可以更改为嵌套结构,例如
playerStats = {'players': {'hits' : 0,
'atBats' : 0,
'avgs' : 0)}
然后您可以将值修改为
playerStats[player]['hits'] = 3