数据的一些背景:正在玩一些不同的游戏,每个游戏都承载了许多玩家。每场比赛由若干轮组成,在每一轮中,每个参与的玩家都会做出一个动作。我在这里尝试做的是在内存中构建一个数据结构,用于存储玩家在所有正在玩的游戏中所采取的个人行动的完整历史。
一个明显的结构是一个深度嵌套的字典/哈希图,其中每个game_id
映射到多个player_id
s,每个 player_id 映射到不同round_number
的 s,每个round_number
映射到一个action
.
换句话说,game_id:player_id:round_number:action
. 另一方面,我也可以使用game_id:round_number:player_id:action
当我尝试访问上述数据结构以用于不同的分析目的时,就会出现问题。例如game_id:player_id:round_number:action
,如果我想知道玩家在给定游戏的特定回合中所做的所有动作,那么它是不方便的。game_id:round_number:player_id:action
相反,如果我想知道特定玩家在给定游戏过程中所做的所有动作,则同样不方便。不幸的是,就我而言,我需要经常问这两个问题。
我想知道是否有一个单一的数据结构可以存储这样的数据并且方便访问如上所述的玩家级别和回合级别的数据。如果这很重要,实现将在 Python 中。
编辑:一些人推荐使用内存中的 sqlite 数据库来处理此类关系查询。然而,它的性能对我来说可能是一个问题,正如这里所讨论的:SQLite Performance Benchmark --Why is :memory: so slow...only 1.5X as fast as disk?