首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有梦幻足球数据的嵌套字典Python

带有梦幻足球数据的嵌套字典Python
EN

Stack Overflow用户
提问于 2014-08-29 03:18:23
回答 1查看 288关注 0票数 0

我试图运行我自己的统计模型,试图在我的梦幻足球联赛中获得一个优势,而且我在创建字典的数据结构方面遇到了困难。我的数据是这样的。

代码语言:javascript
复制
Player  Team    G   Att Yard    TD  Target  Rec Yard    TD  FFPts   FFpts/G
Adrian Peterson MIN 1   18  93  2   4   4   18  1   29.1    29.1
Reggie Bush DET 1   21  90  0   8   4   101 1   25.1    25.1
LeSean McCoy    PHI 1   31  184 1   1   1   5   0   24.9    24.9
Joique Bell DET 1   6   25  2   6   5   67  0   21.2    21.2
Jamaal Charles  KC  1   16  77  1   6   3   23  0   16.0    16.0
Shane Vereen    NE  1   14  101 0   10  7   58  0   15.9    15.9

我有这个季节每周的文件。

代码语言:javascript
复制
{'Adrian Peterson': 
    {'week1.txt':
       {'Team':'MIN', 'G':'1','Att':'18'....}
    }
    {'week2.txt':
       {'Team':'MIN', 'G':'1','Att':'20'....}
    }
}

然而,当我运行我的代码时,它每周都会覆盖,我不知道为什么。

代码:

代码语言:javascript
复制
import os

def makeDict():
    directory = os.listdir('.')
    print directory
    playerDict = {}
    for item in directory:
        if item != 'bayes.py' and item !='.DS_Store':
            f = open(item)
            headers = f.readline().split('\t')
            for line in f:
                    stats = line.replace('\n','').split('\t')
                    statDict = {}
                    weekDict = {}
                    for i,stat in enumerate(stats):
                        if i ==0:
                            player = stat
                        else:
                            statDict[headers[i]] = stat
                        if i == len(stats)-1:
                            weekDict[item] = statDict
                            playerDict[player] = weekDict

    return playerDict

print makeDict()

最后,字典只保存最后一个文件中的信息。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-29 03:36:57

原因是因为您构造输出字典的方式是错误的。如果Adrian Peterson的统计数据将在多个文件中,并且您希望将它们聚合到一个键(即他的名字)下,那么playerDict[player_name]应该是一个列表。

因此,请更改代码以执行以下操作:

  1. from collections import defaultdict
  2. playerDict = defaultdict(list)
  3. playerDict[player].append(weekDict)而不是playerDict[player] = weekDict

我在不同的文件中复制了Adrian Peterson的数据,对您的代码进行了上述更改,这就是我所看到的:

代码语言:javascript
复制
{
    'AdrianPeterson': [
        {
            'data': {
                'FFPts': '29.1',
                'Yard': '18',
                'Target': '4',
                'G': '1',
                'Att': '188',
                'Team': 'MIN',
                'Rec': '4',
                'TD': '1',
                'FFpts/G\n': '29.1'
            }
        },
        {
            'data2': {
                'FFPts': '29.1',
                'Yard': '18',
                'Target': '4',
                'G': '1',
                'Att': '188',
                'Team': 'MIN',
                'Rec': '4',
                'TD': '1',
                'FFpts/G\n': '29.1'
            }
        }
    ]
}

这里,datadata2是我文件的名字。在您的例子中,应该是week1.txtweek2.txt

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25561190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档