python 语言,list中合并重复字典,将value相加

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 语言,list中合并重复字典,将value相加相关的知识,希望对你有一定的参考价值。

info_list = [name:'apple',value:2,name:'orange',value:5,name:'apple',value:5]
==》》》
info_list = [name:'apple',value:7,name:'orange',value:5]
现在info_list中有两项重复的apple,如何合并,求教大神,并将值相加?

参考技术A info= ['name':'apple','value':2,'name':'orange','value':5,'name':'apple','value':5]
info_dic=
for d in info:
   if d['name'] not in info_dic:      
      info_dic[d['name']]=d['value']
   else: info_dic[d['name']]+=d['value']
new_info=[]
for n,v in info_dic.items():
   new_info.append('name':n,'value':v)
print(new_info)

['name': 'apple', 'value': 7, 'name': 'orange', 'value': 5]

本回答被提问者和网友采纳
参考技术B Set ,去重

python 两个list合并成字典

第一个list:
['PID', 'USERNAME', 'THR', 'PRI', 'NICE', 'SIZE', 'RES', 'STATE', 'TIME', 'WCPU', 'COMMAND']
第二个list:
['32', 'root', '1', '-36', '-155', '0K', '16K', 'WAIT', '0:00', '0.00%', 'swi3:', 'ip6opt', 'ipopt']
分别一一对应:第二个list中'swi3:', 'ip6opt', 'ipopt'作为一个元素对应第一个list中的COMMAND
转换字典格式:dict='PID':'32','USERNAME':'root',......,'COMMAND':'swi3: ip6opt ipopt'
怎么把这两个list转换成一个dict

代码如下:

keys = ['PID', 'USERNAME', 'THR', 'PRI', 'NICE', 'SIZE', 'RES', 'STATE', 'TIME', 'WCPU', 'COMMAND']
items = ['32', 'root', '1', '-36', '-155', '0K', '16K', 'WAIT', '0:00', '0.00%', 'swi3:', 'ip6opt', 'ipopt']

dt = dict()
keys_len = len(keys)
items_len = len(items)

# 先读取除最后一个key写入字典
for i in range(keys_len-1):
    dt[keys[i]] = items[i]

# 读取最后一个key和值写入字典
command_key = keys[i]
command_text = []
for i in range(keys_len-1,items_len):
    command_text.append(items[i]) 
dt[command_key] = ' '.join(command_text)

# 输入字典结果
print(dt)

输出如下:

'NICE': '-155',
 'PID': '32',
 'PRI': '-36',
 'RES': '16K',
 'SIZE': '0K',
 'STATE': 'WAIT',
 'THR': '1',
 'TIME': '0:00',
 'USERNAME': 'root',
 'WCPU': 'swi3: ip6opt ipopt'

参考技术A

先对list2行进处理,然后再合并

ls1 = ['PID', 'USERNAME', 'THR', 'PRI', 'NICE', 'SIZE', 'RES', 'STATE', 'TIME', 'WCPU', 'COMMAND']
ls2 = ['32', 'root', '1', '-36', '-155', '0K', '16K', 'WAIT', '0:00', '0.00%', 'swi3:', 'ip6opt', 'ipopt']
ls3 = ls2[0:10]
ls3.append(" ".join(ls2[10:]))
d = 
for i in range(len(ls1)):
d[ls1[i]] = ls3[i]
print d

本回答被提问者和网友采纳
参考技术B l1 = ['PID', 'USERNAME', 'THR', 'PRI', 'NICE', 'SIZE', 'RES', 'STATE', 'TIME', 'WCPU', 'COMMAND']
l2 = ['32', 'root', '1', '-36', '-155', '0K', '16K', 'WAIT', '0:00', '0.00%', 'swi3:', 'ip6opt', 'ipopt']
d=dict(zip(l1[:-1],l2[:-3]))
d[l1[-1]]=l2[-3:]
print(d)

'COMMAND': ['swi3:', 'ip6opt', 'ipopt'],
 'NICE': '-155',
 'PID': '32',
 'PRI': '-36',
 'RES': '16K',
 'SIZE': '0K',
 'STATE': 'WAIT',
 'THR': '1',
 'TIME': '0:00',
 'USERNAME': 'root',
 'WCPU': '0.00%'

以上是关于python 语言,list中合并重复字典,将value相加的主要内容,如果未能解决你的问题,请参考以下文章

合并字典列表以删除所有重复项

python 字典dict和列表list的读取速度问题, range合并

如何在Python中合并字典中的所有数据框[重复]

python中将两个list合并为字典

python-字典dict去除重复set

python数据结构之列表字典元组集合