首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何循环和计算每个游戏已经玩了多少次?

如何循环和计算每个游戏已经玩了多少次?
EN

Stack Overflow用户
提问于 2021-10-27 23:47:36
回答 4查看 268关注 0票数 2
代码语言:javascript
复制
game_record = [['*', 'G02', 'G05', 'G07', 'G08', 'G10'], 
          ['P001', '1', '0', '-1', '503', '1'], 
          ['P067', '1', '1', '0', '-1', '503'], 
          ['P218', '0', '1', '1', '-1', '-1'], 
          ['P101', '0', '0', '1', '1', '503'], 
          ['P456', '1', '1', '-1', '1', '-1']]

有关game_record列表数据的信息:

  • *=没什么,只是个迹象
  • GXX = game_id
  • PXXX = player_id
  • 1=玩游戏和赢球(比赛结束并记录)
  • 0=玩游戏和输(比赛结束和记录)
  • -1 =不玩游戏(没有记录)
  • 503 =在一个正在进行的游戏中(游戏没有完成,也没有记录)

例如:

  • G02已经被5名球员完成,3名球员获胜,2名球员输掉。
  • G08已经被2名球员完成,总共有2名球员获胜。

因此,只有'1‘和'0’的问题记录在案。

我想循环这个2D列表来计算每个游戏(game_id)被玩家玩了多少次,赢了,输了多少次。然后把它们保存到字典里。

预期产出:

代码语言:javascript
复制
Game_info = {G02: [5, 3, 2], G05: [5, 3, 2], G07: [3, 2, 1], G08: [2, 2, 0], G10: [1, 1, 0]}
EN

回答 4

Stack Overflow用户

发布于 2021-10-28 00:25:26

从字典开始,game_record中的所有游戏都是用[0,0,0]初始化的

代码语言:javascript
复制
Game_info = { game:[0,0,0] for game in game_record[0] if game != "*"}

然后,您只需在game_record中迭代并更新Game_info中的值。

代码语言:javascript
复制
n, m = len(game_record[0]), len(game_record)

for y in range(1,n):
     g_id = game_record[0][y]
     for x in range(1,m):
         res = game_record[x][y]
         if res == '1':
             Game_info[g_id][0] += 1
             Game_info[g_id][1] += 1
         elif res == '0':
             Game_info[g_id][0] += 1
             Game_info[g_id][2] += 1         
票数 1
EN

Stack Overflow用户

发布于 2021-10-28 00:33:20

可以使用NumPy和布尔数组保存循环:

代码语言:javascript
复制
import numpy as np

results = np.array(game_record)[1:, 1:].astype(int)

won_by_game = (results == 1).sum(axis=0)
lost_by_game = (results == 0).sum(axis=0)
played_by_game = won_by_game + lost_by_game

game_info = {game: [played, won, lost] 
             for game, played, won, lost in 
             zip(game_record[0][1:], played_by_game, 
                 won_by_game, lost_by_game)}
game_info
代码语言:javascript
复制
{'G02': [5, 3, 2],
 'G05': [5, 3, 2],
 'G07': [3, 2, 1],
 'G08': [2, 2, 0],
 'G10': [1, 1, 0]}
票数 1
EN

Stack Overflow用户

发布于 2021-10-28 00:39:09

尝尝这个。

代码语言:javascript
复制
game_record = [
    ['*', 'G02', 'G05', 'G07', 'G08', 'G10'], 
    ['P001', '1', '0', '-1', '503', '1'], 
    ['P067', '1', '1', '0', '-1', '503'], 
    ['P218', '0', '1', '1', '-1', '-1'], 
    ['P101', '0', '0', '1', '1', '503'], 
    ['P456', '1', '1', '-1', '1', '-1']
]


res = {}

for i in range(1, 6):
    w, l = 0, 0
    label = game_record[0][i]
    for j in range(1, 6):   
        v = game_record[j][i]  # access matrix value (column-wise) except row 0 and col 0
        if v == '-1' or v == '503':
            continue
        if v == '1':
            w += 1
        else:
            l += 1
    g = w + l
    res.update({label: [g, w, l]})

print(res)
# {'G02': [5, 3, 2], 'G05': [5, 3, 2], 'G07': [3, 2, 1], 'G08': [2, 2, 0], 'G10': [1, 1, 0]}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69746703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档