gpt4 book ai didi

Python数据结构推荐?

转载 作者:太空狗 更新时间:2023-10-30 02:06:41 24 4
gpt4 key购买 nike

我目前有一个字典结构:每个值都是一个包含数值的列表。这些数字列表中的每一个都包含您可以称之为主键的内容(借用 SQL 习语),其中包含前三个值,即:年份、球员标识符和团队标识符。这是字典的关键。

因此,您可以通过传递年份、玩家 ID 和团队 ID 的值来获得唯一的行,如下所示:

statline = stats[(2001, 'SEA', 'suzukic01')]

这会产生类似的东西

[305, 20, 444, 330, 45]

我想更改此数据结构,以便通过这三个键中的任何一个快速求和:这样您就可以通过传入年份之一、球员 ID 和球队来轻松地对数字列表中给定索引的总计进行切片ID,然后是索引。我希望能够做类似的事情

hr_total = stats[year=2001, idx=3]

其中 idx 3 对应于将检索的数字列表中的第三列。

有什么想法吗?

最佳答案

阅读数据仓库。任何书。

阅读星型模式设计。任何书。严重地。

您有几个维度:年份、球员、球队。

你有一个事实:分数

您想拥有这样的结构。

然后您想要像这样创建一组维度索引。

years = collections.defaultdict( list )
players = collections.defaultdict( list )
teams = collections.defaultdict( list )

您的事实表可以是collections.namedtuple。你可以使用这样的东西。

class ScoreFact( object ):
def __init__( self, year, player, team, score ):
self.year= year
self.player= player
self.team= team
self.score= score
years[self.year].append( self )
players[self.player].append( self )
teams[self.team].append( self )

现在您可以找到给定维度值中的所有项目。这是一个附加到维度值的简单列表。

years['2001'] are all scores for the given year.

players['SEA'] are all scores for the given player.

等您可以简单地使用 sum() 将它们相加。多维查询是这样的。

[ x for x in players['SEA'] if x.year == '2001' ]

关于Python数据结构推荐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1698734/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com