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列表数据的信息:
例如:
因此,只有'1‘和'0’的问题记录在案。
我想循环这个2D列表来计算每个游戏(game_id)被玩家玩了多少次,赢了,输了多少次。然后把它们保存到字典里。
预期产出:
Game_info = {G02: [5, 3, 2], G05: [5, 3, 2], G07: [3, 2, 1], G08: [2, 2, 0], G10: [1, 1, 0]}发布于 2021-10-28 00:25:26
从字典开始,game_record中的所有游戏都是用[0,0,0]初始化的
Game_info = { game:[0,0,0] for game in game_record[0] if game != "*"}然后,您只需在game_record中迭代并更新Game_info中的值。
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 发布于 2021-10-28 00:33:20
可以使用NumPy和布尔数组保存循环:
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{'G02': [5, 3, 2],
'G05': [5, 3, 2],
'G07': [3, 2, 1],
'G08': [2, 2, 0],
'G10': [1, 1, 0]}发布于 2021-10-28 00:39:09
尝尝这个。
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]}https://stackoverflow.com/questions/69746703
复制相似问题