您好,匿名用户
随意问技术百科期待您的加入

python dic value中的数字相加解决方案

0 投票

在写一些页面数据汇总的时候碰到了这样一个需求:生成了很多的字典
如:
dict1={'a':'3 host disabled','b':'0 Pending','c':'12 OK','d':''}
dict2={'b':'1 Pending','d':'4 service disabled','g':'hosts'}
dict3={'a':'1 host disabled','e':'2 DOWN','f':'services'}
...

类似这样的 每一个dict不一定所有的key都在 也有可能key在但value为空 但需要把所有dic的value进行相加汇总 输出dict 如:dict={'a':'4 host disabled','b':'1 pending','c':'12 OK','d':'4 service disabled','e':'2 DOWN'} 而且还会存在只有字母没有数字的情况 有数字的才进行相加
现在麻烦的就是 从value值中抽取数字进行相加 并且还要附加上后面的字符串 当然同一个key value涉及到的字符串是一样的。

PS:不改变原来的dict 都需要继续使用 新生成一个

有没有好的解决方案。

用户头像 提问 2012年 12月1日 @ Nautilus 上等兵 (223 威望)
分享到:

1个回答

0 投票
 
最佳答案

其实 @yanyaoer 已经把问题解释的比较清楚了。只是 @Ajian 需要对数据做一个预处理。看在同事的份上,我帮你把 code 写出来吧~

#! /usr/bin/python
# -*- coding: utf-8 -*-
import string

dict1={'a':'3 host disabled','b':'0 Pending','c':'12 OK','d':''}
dict2={'b':'1 Pending','d':'4 service disabled','g':'hosts'}
dict3={'a':'1 host disabled','e':'2 DOWN','f':'services'}

statusMap = {}
dataList = []
for dict in [dict1, dict2, dict3]:
    data = {}
    for k,v in dict:
        if len(v) <=0:
            continue
        arr = v.split(" ", 1)
        if (len(arr) <= 1):
            statusMap[k] = arr[0]
            continue
        data[k] = arr[0]
        statusMap[k] = arr[1]

    dataList.append(data)

data = merge(dataList)
ret = {}
for k,v in ret:
    ret[k] = v + " " + statusMap[k]
print ret
用户头像 回复 2012年 12月1日 @ Nasus 上等兵 (329 威望)
选中 2012年 12月1日 @Nautilus
提一个问题:

相关问题

0 投票
1 回复 47 阅读
用户头像 提问 2012年 12月1日 @ Renekton 上等兵 (260 威望)
0 投票
1 回复 29 阅读
用户头像 提问 2013年 11月14日 @ Galio 上等兵 (289 威望)
0 投票
1 回复 156 阅读
+2 投票
1 回复 50 阅读
用户头像 提问 2012年 12月31日 @ Saber 中士 (1,234 威望)
0 投票
1 回复 20 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...