从另一个字典更新多值字典中的值

时间:2013-11-28 16:37:53

标签: python dictionary

我有两个字典,我正在寻找一种方法来更新多值字典IP_list中的值,方法是检查字典ID_list中的值。基本上我需要用ID_list中的id值替换来自IP_list的电子邮件字符串。

IP_list={'ip1': ['email1', 'string1'], 'ip2': ['email2', 'string2'],'ip3': ['email2', 'string3']} {
{1}}

预期产量:
ID_list={'email1': 'id1', 'email2': 'id2', 'email3': 'id3'}
或ID值可以在特定键值的末尾添加为:
{'ip1': ['id1', 'string1'], 'ip2': ['id2', 'string2'],'ip3': ['id2', 'string3']}

有人可以帮忙吗?

由于 学家

编辑:我尝试过Roman建议的解决方案,它在Python 2.7.5上运行没有问题,但它让我很难让它在Python 2.6.6上工作

@Roman,IP_list是从MSSQL db创建的:

{'ip1': ['email1','string1','id1'], 'ip2': ['email2','string2','id2'],'ip3': ['email2','string3','id2']}

for row in results: IP_list[row.IP_address]= row.email, row.description 会给出: 在我的开发环境中的Python 2.7.5上,我将得到:

print IP_list

在使用Python 2.6.6的生产系统上,我将得到一些值unicode

{'IP': ('email1', 'description "info"'),'IP2': ('email2', 'description')}

所以我将unicode值转换为ascii,所以应该没有问题。

在输出上从XML创建的ID_list在两个envinronments上都是相同的:

{'IP': (u'email1', u'description "info"'),'IP2': (u'email2', u'description')}

当我在Python 2.7.5上运行脚本时它工作正常,但在2.6.6上它给了我这个错误

{'email1': 'id1', 'email2': 'id2', 'email3': 'id3'}

1 个答案:

答案 0 :(得分:1)

类似的东西:

for val in IP_list.itervalues():
    val[0] = ID_list.get(val[0], val[0])

如果IP_list中缺少来自ID_list的电子邮件,则不会更改。

现在IP_list看起来像是:

{'ip2': ['id2', 'string2'], 'ip3': ['id2', 'string3'], 'ip1': ['id1', 'string1']}