【发布时间】:2012-11-28 00:37:30
【问题描述】:
我有一个字典列表,每个字典都有这样的数据:
'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
我想在字典列表中获取匹配玩家姓名的所有索引并打印它们和/或打印其中的数据。我可以打印所有列表并将其格式化以匹配我的文件等,但我不确定如何搜索它,因为它与我在此进行的其他搜索有点不同。
我可以用这个打印整个数据集(我知道很难看,但它有效):
i = 0
for item in records:
print "\n", "[%s] %s - %s/%s/%s - %s - %s-%s-%s" % (records[i][0], records[i][1]['player'], records[i][1]['stats']['kills'], records[i][1]['stats']['deaths'], records[i][1]['stats']['assists'], records[i][1]['outcome'], records[i][1]['date'][0], records[i][1]['date'][1], records[i][1]['date'][2])
i = i + 1
有人可以帮忙吗?我需要能够在其中搜索玩家姓名并打印出每个匹配项(并返回索引,以便我可以使用匹配的集合来处理其他内容,而不是再次运行整个搜索),我想我想返回匹配列表,以便我可以使用它们或导出它们或其他任何东西。感谢您的帮助!
[编辑] 由于到目前为止似乎有更多的问题而不是答案,这里是到目前为止的整个文件: http://www.pasteall.org/37589/python
这是 stats4.txt: http://www.pasteall.org/37590
【问题讨论】:
-
作为开始,您可以使用 enumerate 并省去跟踪递增计数器的麻烦,即
for i, item in enumerate(records): -
字典列表,还是包含字典的字典?列表不能有命名条目 (
'Caitlyn': {...) -
更好的是,只需删除循环计数器。在循环内部,
item is records[i]。另外,player字段有什么作用?您那里有重复的信息。 -
我发布的字典示例是列表中的一项,输入统计文件的每一行都有其他项,播放器字段在那里,因为我想不出另一种方法来获得它输出,而不必直接引用玩家名称来获取数据
标签: python list search dictionary dataset