1

我有一个字典,其中包含多个人的 ID 和一个整数值(赢总数),如下所示:

{12345: 2, 23456: 10}

目前只有2个人在里面进行测试,但会有很多人。

我有另一个格式相同的字典,具有不同的整数值(总游戏数),如下所示:

{12345: 10, 23456: 20}

我需要创建第三个字典来存储这样的获胜百分比(从第一个字典中获取值并除以第二个字典):

{12345: .200, 23456: .500} *保持原始百分比

-或者-

{12345: 20, 23456: 50} *乘以 100 得到整数值(如果这是我能做到的唯一方法)

这需要为字典中的所有玩家完成。每个人的每个字典中都应该有一对匹配的。

有人可以帮忙吗?我已经搜索了这些论坛好几天,找不到一个好的方法。

4

3 回答 3

1

为什么不即时计算每个人的获胜百分比?与保留第三本词典相比,它会更容易、更有效(并且符合良好的数据存储原则)。

就像是:

def win_percentage(id):
    if id in total_games and id in num_wins and total_games[id] > 0:
        return num_wins[id] / float(total_games[id])
    else:
        return 0 # or raise an exception, whatever
于 2013-10-17T23:29:37.570 回答
1

What about this:

{ key: wins[key]/games[key] for key in wins.keys()
                            if key in games and games[key]>0
}

where wins and games -- your source dictionaries. This will create result values only for keys presented in both dictionaries.

于 2013-10-17T23:35:02.210 回答
0

以下将创建一个带有百分比的新字典。

通过将百分比设置为 0 来处理总游戏数为零或人员条目缺少游戏字典的情况。

wins={12345: 2, 23456: 10}
games={12345: 10, 23456: 20}

percentage={}
for key, value in wins.iteritems():
    try :
       percentage[key]=wins[key]*1.0/games[key]*1.0
    except KeyError :
       percentage[key]=0
    except ZeroDivisionError :
       percentage[key]=0
于 2013-10-17T23:45:31.077 回答