我有一份这样的字典清单
[{'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的正标记,并将其添加到另一个字典中
例如,此列表的输出应如下所示
dict={'1':240,'2':60}其中1和2是我在这个问题上纠结了很长一段时间的部分ids。有人能帮我吗?我该怎么继续下去?
我已经创建了一本字典,类似于
[{'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}]发布于 2019-11-11 16:44:10
尝试使用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'))发布于 2019-11-11 16:59:42
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)发布于 2019-11-11 16:42:28
试试这个:
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}https://stackoverflow.com/questions/58797906
复制相似问题