2016-11-16 159 views
1
def handleData(self, data): 
    players = self.gameData["participants"] 
    teams = {} 
    for player in players: 
     if player["teamId"] == 100: 
      teams["team A"] = player 
     else: 
      teams["team B"] = player 

正在處理的數據是一個包含其中幾個字典的列表。也許這是問題的一部分?循環只運行一次python

這裏是什麼在GAMEDATA [「paticipants」]

[{u'profileIconId': 687, u'championId': 92, u'summonerName': u'digbluefire', u'runes': [{u'count': 9, u'runeId': 5245}, {u'count': 5, u'runeId': 5289}, {u'count': 4, u'runeId': 5301}, {u'count': 9, u'runeId': 5317}, {u'count': 1, u'runeId': 5335}, {u'count': 2, u'runeId': 5337}], u'bot': False, u'masteries': [{u'masteryId': 6114, u'rank': 5}, {u'masteryId': 6121, u'rank': 1}, {u'masteryId': 6131, u'rank': 5}, {u'masteryId': 6142, u'rank': 1}, {u'masteryId': 6312, u'rank': 5}, {u'masteryId': 6321, u'rank': 1}, {u'masteryId': 6331, u'rank': 5}, {u'masteryId': 6343, u'rank': 1}, {u'masteryId': 6351, u'rank': 5}, {u'masteryId': 6362, u'rank': 1}], u'spell2Id': 4, u'teamId': 100, u'spell1Id': 11, u'summonerId': 51678281}, {u'profileIconId': 22, u'championId': 114, u'summonerName': u'fkn lit', u'runes': [{u'count': 9, u'runeId': 5245}, {u'count': 9, u'runeId': 5289}, {u'count': 9, u'runeId': 5317}, {u'count': 3, u'runeId': 5337}], u'bot': False, u'masteries': [{u'masteryId': 6111, u'rank': 5}, {u'masteryId': 6122, u'rank': 1}, {u'masteryId': 6131, u'rank': 5}, {u'masteryId': 6141, u'rank': 1}, {u'masteryId': 6151, u'rank': 5}, {u'masteryId': 6162, u'rank': 1}, {u'masteryId': 6211, u'rank': 5}, {u'masteryId': 6223, u'rank': 1}, {u'masteryId': 6231, u'rank': 5}, {u'masteryId': 6241, u'rank': 1}], u'spell2Id': 4, u'teamId': 100, u'spell1Id': 12, u'summonerId': 73080486}, {u'profileIconId': 1226, u'championId': 4, u'summonerName': u'LeeroyJ123', u'runes': [{u'count': 9, u'runeId': 5273}, {u'count': 5, u'runeId': 5297}, {u'count': 4, u'runeId': 5298}, {u'count': 9, u'runeId': 5317}, {u'count': 2, u'runeId': 5357}, {u'count': 1, u'runeId': 5358}], u'bot': False, u'masteries': [{u'masteryId': 6114, u'rank': 5}, {u'masteryId': 6122, u'rank': 1}, {u'masteryId': 6134, u'rank': 5}, {u'masteryId': 6142, u'rank': 1}, {u'masteryId': 6311, u'rank': 5}, {u'masteryId': 6323, u'rank': 1}, {u'masteryId': 6331, u'rank': 5}, {u'masteryId': 6343, u'rank': 1}, {u'masteryId': 6352, u'rank': 5}, {u'masteryId': 6362, u'rank': 1}], u'spell2Id': 4, u'teamId': 100, u'spell1Id': 12, u'summonerId': 32263666}, {u'profileIconId': 1382, u'championId': 53, u'summonerName': u'DethBeard', u'runes': [{u'count': 9, u'runeId': 5245}, {u'count': 9, u'runeId': 5289}, {u'count': 9, u'runeId': 5315}, {u'count': 1, u'runeId': 5343}, {u'count': 2, u'runeId': 5347}], u'bot': False, u'masteries': [{u'masteryId': 6211, u'rank': 5}, {u'masteryId': 6223, u'rank': 1}, {u'masteryId': 6232, u'rank': 5}, {u'masteryId': 6241, u'rank': 1}, {u'masteryId': 6252, u'rank': 5}, {u'masteryId': 6263, u'rank': 1}, {u'masteryId': 6311, u'rank': 5}, {u'masteryId': 6323, u'rank': 1}, {u'masteryId': 6331, u'rank': 5}, {u'masteryId': 6342, u'rank': 1}], u'spell2Id': 3, u'teamId': 100, u'spell1Id': 4, u'summonerId': 21720577}, {u'profileIconId': 1151, u'championId': 51, u'summonerName': u'lildink', u'runes': [{u'count': 9, u'runeId': 5245}, {u'count': 9, u'runeId': 5289}, {u'count': 9, u'runeId': 5317}, {u'count': 3, u'runeId': 5412}], u'bot': False, u'masteries': [{u'masteryId': 6111, u'rank': 5}, {u'masteryId': 6121, u'rank': 1}, {u'masteryId': 6131, u'rank': 5}, {u'masteryId': 6142, u'rank': 1}, {u'masteryId': 6151, u'rank': 5}, {u'masteryId': 6161, u'rank': 1}, {u'masteryId': 6312, u'rank': 5}, {u'masteryId': 6323, u'rank': 1}, {u'masteryId': 6332, u'rank': 5}, {u'masteryId': 6343, u'rank': 1}], u'spell2Id': 4, u'teamId': 100, u'spell1Id': 7, u'summonerId': 24456467}, {u'profileIconId': 713, u'championId': 32, u'summonerName': u'JHShieldWolf', u'runes': [{u'count': 1, u'runeId': 5119}, {u'count': 9, u'runeId': 5273}, {u'count': 1, u'runeId': 5290}, {u'count': 8, u'runeId': 5297}, {u'count': 9, u'runeId': 5317}, {u'count': 1, u'runeId': 5365}, {u'count': 1, u'runeId': 5409}], u'bot': False, u'masteries': [{u'masteryId': 6212, u'rank': 5}, {u'masteryId': 6223, u'rank': 1}, {u'masteryId': 6232, u'rank': 5}, {u'masteryId': 6242, u'rank': 1}, {u'masteryId': 6251, u'rank': 5}, {u'masteryId': 6262, u'rank': 1}, {u'masteryId': 6311, u'rank': 5}, {u'masteryId': 6321, u'rank': 1}, {u'masteryId': 6332, u'rank': 5}, {u'masteryId': 6341, u'rank': 1}], u'spell2Id': 4, u'teamId': 200, u'spell1Id': 11, u'summonerId': 34293748}, {u'profileIconId': 1389, u'championId': 86, u'summonerName': u'xwarallthetimex', u'runes': [{u'count': 9, u'runeId': 5245}, {u'count': 9, u'runeId': 5289}, {u'count': 9, u'runeId': 5317}, {u'count': 3, u'runeId': 5347}], u'bot': False, u'masteries': [{u'masteryId': 6212, u'rank': 5}, {u'masteryId': 6223, u'rank': 1}, {u'masteryId': 6231, u'rank': 5}, {u'masteryId': 6241, u'rank': 1}, {u'masteryId': 6251, u'rank': 5}, {u'masteryId': 6261, u'rank': 1}, {u'masteryId': 6312, u'rank': 5}, {u'masteryId': 6323, u'rank': 1}, {u'masteryId': 6331, u'rank': 5}, {u'masteryId': 6342, u'rank': 1}], u'spell2Id': 12, u'teamId': 200, u'spell1Id': 4, u'summonerId': 35076058}, {u'profileIconId': 1230, u'championId': 238, u'summonerName': u'sxedoc', u'runes': [{u'count': 9, u'runeId': 5253}, {u'count': 9, u'runeId': 5295}, {u'count': 9, u'runeId': 5305}, {u'count': 3, u'runeId': 5335}], u'bot': False, u'masteries': [{u'masteryId': 6114, u'rank': 5}, {u'masteryId': 6121, u'rank': 1}, {u'masteryId': 6134, u'rank': 5}, {u'masteryId': 6142, u'rank': 1}, {u'masteryId': 6312, u'rank': 5}, {u'masteryId': 6323, u'rank': 1}, {u'masteryId': 6331, u'rank': 5}, {u'masteryId': 6343, u'rank': 1}, {u'masteryId': 6351, u'rank': 5}, {u'masteryId': 6362, u'rank': 1}], u'spell2Id': 14, u'teamId': 200, u'spell1Id': 4, u'summonerId': 49719588}, {u'profileIconId': 909, u'championId': 222, u'summonerName': u'AXL Dunder', u'runes': [{u'count': 9, u'runeId': 5245}, {u'count': 9, u'runeId': 5277}, {u'count': 9, u'runeId': 5305}, {u'count': 3, u'runeId': 5412}], u'bot': False, u'masteries': [{u'masteryId': 6111, u'rank': 5}, {u'masteryId': 6122, u'rank': 1}, {u'masteryId': 6131, u'rank': 5}, {u'masteryId': 6142, u'rank': 1}, {u'masteryId': 6151, u'rank': 5}, {u'masteryId': 6164, u'rank': 1}, {u'masteryId': 6212, u'rank': 5}, {u'masteryId': 6223, u'rank': 1}, {u'masteryId': 6231, u'rank': 5}, {u'masteryId': 6242, u'rank': 1}], u'spell2Id': 4, u'teamId': 200, u'spell1Id': 7, u'summonerId': 51667243}, {u'profileIconId': 685, u'championId': 111, u'summonerName': u'FratDaddyBurrito', u'runes': [{u'count': 9, u'runeId': 5273}, {u'count': 2, u'runeId': 5297}, {u'count': 7, u'runeId': 5298}, {u'count': 2, u'runeId': 5317}, {u'count': 7, u'runeId': 5321}, {u'count': 2, u'runeId': 5357}, {u'count': 1, u'runeId': 5365}], u'bot': False, u'masteries': [{u'masteryId': 6212, u'rank': 5}, {u'masteryId': 6223, u'rank': 1}, {u'masteryId': 6231, u'rank': 3}, {u'masteryId': 6232, u'rank': 2}, {u'masteryId': 6242, u'rank': 1}, {u'masteryId': 6252, u'rank': 5}, {u'masteryId': 6262, u'rank': 1}, {u'masteryId': 6311, u'rank': 5}, {u'masteryId': 6322, u'rank': 1}, {u'masteryId': 6332, u'rank': 5}, {u'masteryId': 6342, u'rank': 1}], u'spell2Id': 3, u'teamId': 200, u'spell1Id': 4, u'summonerId': 51132168}]\ 
+1

大衛,給我們的數據,請。 'self.gameData [「參與者」]看起來像什麼? –

+0

更多代碼請 – MichaelMMeskhi

+0

'data'參數根本沒有被使用。我假設你的意思是'self.gameData [「參與者」]'是一個字典列表。在這種情況下,這段代碼應該可以正常工作。另外,你只需要在字典中給玩家分配2個鍵。這意味着如果超過2個玩家,你只需要一個帶有2個密鑰的字典,每個密鑰都會有你的列表中最後一個匹配該密鑰條件的玩家。 – bigblind

回答

0

我想你想要的是每隊擁有的球員名單,在這種情況下,你可以這樣做:

def handleData(self, data): 
    players = self.gameData["participants"] 
    teams = {} 
    for player in players: 
     if player["teamId"] == 100: 
      teams.setdefault("team A", []).append(player) 
     else: 
      teams.setdefault("team B", []).append(player) 

這樣做是通過玩家循環,如果玩家應該在A隊,將其附加到球隊字典中的team A鍵中的球員列表。如果該列表尚不存在,則setdefault調用將創建該列表。

0

這更像是一個評論,我沒有特權那樣做呢。你的循環似乎很好,你期待的結果是什麼?你是否試圖保留包含該隊所有球員的兩份名單的字典?

在這種情況下,您每次運行循環而不是附加到列表時,都會爲其分配一個新值。嘗試是這樣的:

players = [{'name':'Player A','teamID':100}, \ 
      {'name':'Player B','teamID':100}, \ 
      {'name':'Player C','teamID':200}, \ 
      {'name':'Player D','teamID':200}] 

teams={'Team A':[],'Team B':[]} 
for player in players: 
    if player['teamID'] == 100: 
     teams['Team A'].append(player['name']) 
    else: 
     teams['Team B'].append(player['name']) 

for player in teams['Team A']: 
    print(player) 
print() 
for player in teams['Team B']: 
    print(player) 

這將產生輸出:

Player A 
Player B 

Player C 
Player D