首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在key的基础上添加字典的值

在key的基础上添加字典的值
EN

Stack Overflow用户
提问于 2019-11-11 16:33:30
回答 7查看 59关注 0票数 0

我有一份这样的字典清单

代码语言:javascript
复制
[{'format_id': '294', 'section_id': '2', 'type_id': '2', 'num_questions': '5', 'positive_marks': '4', 'negative_marks': '0', 'partial_marks': '0', 'user_id': '1', 'updated_on': '2019-9-6 11:16:01', 'section_instruction': '/ckfinder/userfiles/Instruction-Image/Main_Pattern_Test/Physics-Section-B.jpg'}
{'format_id': '294', 'section_id': '1', 'type_id': '6', 'num_questions': '20', 'positive_marks': '4', 'negative_marks': '0', 'partial_marks': '0', 'user_id': '1', 'updated_on': '2019-9-6 11:16:01', 'section_instruction': '/ckfinder/userfiles/Instruction-Image/Main_Pattern_Test/Physics-Section-A.jpg'}
{'format_id': '294', 'section_id': '2', 'type_id': '2', 'num_questions': '5', 'positive_marks': '4', 'negative_marks': '0', 'partial_marks': '0', 'user_id': '1', 'updated_on': '2019-9-6 11:16:01', 'section_instruction': '/ckfinder/userfiles/Instruction-Image/Main_Pattern_Test/Chemistry-Section-B.jpg'}
{'format_id': '294', 'section_id': '1', 'type_id': '6', 'num_questions': '20', 'positive_marks': '4', 'negative_marks': '0', 'partial_marks': '0', 'user_id': '1', 'updated_on': '2019-9-6 11:16:01', 'section_instruction': '/ckfinder/userfiles/Instruction-Image/Main_Pattern_Test/Chemistry-Section-A.jpg'}
{'format_id': '294', 'section_id': '2', 'type_id': '2', 'num_questions': '5', 'positive_marks': '4', 'negative_marks': '0', 'partial_marks': '0', 'user_id': '1', 'updated_on': '2019-9-6 11:16:01', 'section_instruction': '/ckfinder/userfiles/Instruction-Image/Main_Pattern_Test/Maths-Section-B.jpg'}
{'format_id': '294', 'section_id': '1', 'type_id': '6', 'num_questions': '20', 'positive_marks': '4', 'negative_marks': '0', 'partial_marks': '0', 'user_id': '1', 'updated_on': '2019-9-6 11:16:01', 'section_instruction': '/ckfinder/userfiles/Instruction-Image/Main_Pattern_Test/Maths-Section-A.jpg'}]

我想添加'num_questions‘的乘积和相同section_id的正标记,并将其添加到另一个字典中

例如,此列表的输出应如下所示

代码语言:javascript
复制
dict={'1':240,'2':60}

其中1和2是我在这个问题上纠结了很长一段时间的部分ids。有人能帮我吗?我该怎么继续下去?

我已经创建了一本字典,类似于

代码语言:javascript
复制
[{'section_id': 2, 'section_marks': 20}, {'section_id': 1, 'section_marks': 80}, {'section_id': 2, 'section_marks': 20}, {'section_id': 1, 'section_marks': 80}, {'section_id': 2, 'section_marks': 20}, {'section_id': 1, 'section_marks': 80}]
EN

回答 7

Stack Overflow用户

发布于 2019-11-11 16:44:10

尝试使用defaultdict

代码语言:javascript
复制
from collections import defaultdict

res = defaultdict(int)

for item in list_dict:
    positive_marks = int(item.get('positive_marks', 0))
    if positive_marks > 0:
        res[item.get('section_id')] += positive_marks * int(item.get('num_questions'))
票数 1
EN

Stack Overflow用户

发布于 2019-11-11 16:59:42

代码语言:javascript
复制
arr = [{'format_id': '294', 'section_id': ........},......]

d={}
for i in arr:
    sec_id = i['section_id']
    pos_marks = (int(i['num_questions']) * int(i['positive_marks']))
    if sec_id in d.keys():
        d[sec_id] = d[sec_id]+ pos_marks
    else:
        d.update({sec_id : pos_marks})

print(d)
票数 1
EN

Stack Overflow用户

发布于 2019-11-11 16:42:28

试试这个:

代码语言:javascript
复制
my_dict = {}
for d in a: # Where "a" is the list of dictionaries you posted
    if my_dict.get(d['section_id']) is None:
        my_dict[d['section_id']] = int(d['num_questions']) * int(d['positive_marks'])
    else:
        my_dict[d['section_id']] += int(d['num_questions']) * int(d['positive_marks'])
my_dict

输出:

代码语言:javascript
复制
{'1': 240, '2': 60}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58797906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档