我有一个字典,其中包含多个人的ID和一个整数值(总赢),如下所示:
{12345: 2, 23456: 10}
目前只有2人在进行测试,但会有很多人。
我有另一个相同格式的字典,其中包含不同的整数值(总游戏):
{12345: 10, 23456: 20}
我需要创建第三个字典来存储这样的胜利百分比(从第一个字典获取值并除以第二个字典):
{12345: .200, 23456: .500}
*保持原始百分比
-OR -
{12345: 20, 23456: 50}
*乘以100得到整数值(如果这只是我可以做到的话)
这需要对字典中的所有玩家进行。每个人都应该在每个字典中都有匹配的对。
有人可以帮忙吗?我已经搜索了几天这些论坛,但找不到一个好方法。
答案 0 :(得分: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
答案 1 :(得分:1)
这个怎么样:
{ key: wins[key]/games[key] for key in wins.keys()
if key in games and games[key]>0
}
其中wins
和games
- 您的源词典。这将仅为两个词典中显示的键创建结果值。
答案 2 :(得分: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