根据键将值附加到字典

时间:2013-10-17 23:25:11

标签: python dictionary

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

{12345: 2, 23456: 10}

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

我有另一个相同格式的字典,其中包含不同的整数值(总游戏):

{12345: 10, 23456: 20}

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

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

-OR -

{12345: 20, 23456: 50} *乘以100得到整数值(如果这只是我可以做到的话)

这需要对字典中的所有玩家进行。每个人都应该在每个字典中都有匹配的对。

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

3 个答案:

答案 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
}

其中winsgames - 您的源词典。这将仅为两个词典中显示的键创建结果值。

答案 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