在python字典中添加和访问键的键

时间:2014-10-06 12:59:31

标签: python dictionary

我正在编写一个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;

1 个答案:

答案 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