python名称的词典搜索列表

python名称的词典搜索列表,python,list,search,dictionary,dataset,Python,List,Search,Dictionary,Dataset,我有一个字典列表,每个字典都有如下数据: 'Caitlyn': {'date': (2012, 11, 24), 'player': 'Caitlyn', 'outcome': 'Win', 'gameid': '00006', 'stats': {'assists': 6, 'kills': 13, 'deaths': 4}} [00006] Caitlyn - 13/4/6 - Win - 2012-11-24 我从一个文件中生成每个项目,文件中有如下行和数据: 'Caitlyn': {

我有一个字典列表,每个字典都有如下数据:

'Caitlyn': {'date': (2012, 11, 24), 'player': 'Caitlyn', 'outcome': 'Win', 'gameid': '00006', 'stats': {'assists': 6, 'kills': 13, 'deaths': 4}}
[00006] Caitlyn - 13/4/6 - Win - 2012-11-24
我从一个文件中生成每个项目,文件中有如下行和数据:

'Caitlyn': {'date': (2012, 11, 24), 'player': 'Caitlyn', 'outcome': 'Win', 'gameid': '00006', 'stats': {'assists': 6, 'kills': 13, 'deaths': 4}}
[00006] Caitlyn - 13/4/6 - Win - 2012-11-24
我想在字典列表中获取匹配播放器名称的所有索引,并打印它们和/或打印其中的数据。我可以打印所有列表,并将其格式化以匹配我的文件等,但我不确定如何进行搜索,因为它与我在本文中进行的其他搜索有点不同

我可以用这个打印整个数据集(我知道很难看,但它可以工作):

有人能帮点忙吗?我需要能够搜索球员姓名并打印出每个匹配项(并返回索引,这样我就可以处理其他内容的匹配集,而不是再次运行整个搜索),我想我想返回一个匹配项列表,这样我就可以使用它们或导出它们或其他任何东西。谢谢你的帮助

[edit]由于到目前为止,问题似乎比答案多,因此这里是到目前为止的整个文件:

这是stats4.txt:

重组数据是否为时已晚

>>> Caitlyn = {'games': [{'date': (2012, 11, 24),
                      'gameid': '00006',
                      'outcome': 'Win',
                      'stats': {'assists': 6, 'deaths': 4, 'kills': 13}}]}
>>> game02 = {'date': (2012, 11, 24),
              'gameid': '00007',
              'outcome': 'Loss',
              'stats': {'assists': 4, 'deaths': 3, 'kills': 16}}
>>> Caitlyn['games'].append(game02)

您可以为每个播放器使用一个字典列表,并将它们保存到它们自己的对象中,它可以很好地进行pickle处理,也可以按原样在应用程序中使用。尽管这确实消除了您到目前为止所做的大量工作,但回报还是不错的。持久存储,无需对文本进行解析/写入,并且能够使用数据库风格的逻辑进行您所说的那种搜索。总统计数据是另一个很好的奖金出现在脑海中。虽然现在还没有回答你的问题,但我希望你至少认为这是一个选择。

< P> >重新调整你的数据是不是太迟了?

>>> Caitlyn = {'games': [{'date': (2012, 11, 24),
                      'gameid': '00006',
                      'outcome': 'Win',
                      'stats': {'assists': 6, 'deaths': 4, 'kills': 13}}]}
>>> game02 = {'date': (2012, 11, 24),
              'gameid': '00007',
              'outcome': 'Loss',
              'stats': {'assists': 4, 'deaths': 3, 'kills': 16}}
>>> Caitlyn['games'].append(game02)

您可以为每个播放器使用一个字典列表,并将它们保存到它们自己的对象中,它可以很好地进行pickle处理,也可以按原样在应用程序中使用。尽管这确实消除了您到目前为止所做的大量工作,但回报还是不错的。持久存储,无需对文本进行解析/写入,并且能够使用数据库风格的逻辑进行您所说的那种搜索。总统计数据是另一个很好的奖金出现在脑海中。虽然现在还没有回答你的问题,但我希望你至少认为这是一种选择。

< P> >在这样一个意想不到的地方遇见另一个召唤者是一件愉快的事。

records = {}

for line in data:
    # parsing codes

    # store player -> gameid mappings to the index
    if player not in records:
        records[player] = []
    records[player].append(info)

print records['Sona']
# this should print out list of games played with Sona
如果您想跟踪与特定冠军一起玩的所有游戏,您可以构建另一个字典,其中冠军名称作为键,游戏统计列表作为值

代码应该是这样的

records = {}

for line in data:
    # parsing codes

    # store player -> gameid mappings to the index
    if player not in records:
        records[player] = []
    records[player].append(info)

print records['Sona']
# this should print out list of games played with Sona
此更改将使您的数据可以通过champion name访问,但不再按游戏ID排序。如果您仍然需要按游戏ID访问数据,我建议您按游戏ID存储数据,并建立另一个字典对其进行索引。这取决于您想对数据做什么


此外,如果您想对这些数据做一些认真的分析,您应该考虑使用Python的一些数据库绑定,例如,它包含在标准库中。数据库是专为这类任务设计的应用程序。

在这样一个意想不到的地方遇到另一个召唤师是一件很高兴的事

records = {}

for line in data:
    # parsing codes

    # store player -> gameid mappings to the index
    if player not in records:
        records[player] = []
    records[player].append(info)

print records['Sona']
# this should print out list of games played with Sona
如果您想跟踪与特定冠军一起玩的所有游戏,您可以构建另一个字典,其中冠军名称作为键,游戏统计列表作为值

代码应该是这样的

records = {}

for line in data:
    # parsing codes

    # store player -> gameid mappings to the index
    if player not in records:
        records[player] = []
    records[player].append(info)

print records['Sona']
# this should print out list of games played with Sona
此更改将使您的数据可以通过champion name访问,但不再按游戏ID排序。如果您仍然需要按游戏ID访问数据,我建议您按游戏ID存储数据,并建立另一个字典对其进行索引。这取决于您想对数据做什么


此外,如果您想对这些数据做一些认真的分析,您应该考虑使用Python的一些数据库绑定,例如,它包含在标准库中。数据库是专为这类任务设计的应用程序。

首先,您可以使用enumerate,省去了跟踪递增计数器的麻烦,即i的
,enumerate(记录)中的项:
字典列表,还是包含字典的字典?列表不能有命名条目(
'Caitlyn':{
..)更好的是,只需删除循环计数器。在循环中,
项是记录[i]
。另外,
player
字段的作用是什么?这里有重复的信息。我发布的字典示例是列表中的一项,输入统计文件的每一行都有其他项,player字段在那里,因为我不必引用player name dir,就无法想出其他方法来获取它为了获取数据,首先,您可以使用enumerate并省去跟踪递增计数器的麻烦,例如,enumerate(记录)中i的项:字典列表或包含字典的字典?列表不能有命名条目(
'Caitlyn':{
)更好的是,只需删除循环计数器。在循环中,
项是records[i]
。另外,
player
字段的作用是什么?这里有重复的信息。我发布的字典示例是列表中的一项,输入统计文件的每一行都有其他项,player字段在那里,因为我不必引用player name dir,就无法想出其他方法来获取它特别是要把数据拿出来谢谢,我会看看我是否能按我需要的方式工作:)是的,数据库当然会很理想,但我不需要这么大的东西,这只是我的第一个小python程序:)我可以将统计数据写入文件(我有另一个冠军名字的文件,我会查找以确保输入的是有效的名字,它还支持缩写词,如tf、mf、kog),现在只需显示它们,然后我会尝试进行一些跟踪和其他工作。再次感谢,我会尝试将这一点转化为我所拥有的:)谢谢,我看看我能不能按我需要的方式来做:)是的,当然可以