基于关键字的字典加值

2024-09-30 00:32:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一份这样的词典目录

[{'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\u questions'的乘积和同一节id的正标记,并将其添加到另一个词典中

例如,这个列表的输出应该是这样的

dict={'1':240,'2':60}

其中1和2是节ID 我在这个问题上纠缠了很长时间。有人能帮我吗?我该怎么办?你知道吗

我编了一本这样的字典

[{'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}]

Tags: idformatontypesectionpartialnumquestions
3条回答

试试这个:

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

输出:

{'1': 240, '2': 60}
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)

试试defaultdict

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'))

相关问题 更多 >

    热门问题