Python JSON数据中最常见(最大)项
如何根据“名称”将此JSON数据拆分为多个组,并对每个组中的“项”数求和,以找到最常见的名称(基于项数)。我正在处理的Python JSON数据中最常见(最大)项,python,json,dictionary,data-science,Python,Json,Dictionary,Data Science,如何根据“名称”将此JSON数据拆分为多个组,并对每个组中的“项”数求和,以找到最常见的名称(基于项数)。我正在处理的JSON数据如下: json_data= [ {'code': '0101010G0AAABAB', 'items': 2, 'practice': 'N81013', 'name': 'Co-Magaldrox_Susp 195mg/220mg/5ml S/F', 'nic': 5.98, 'act_cost': 5.56, 'quantity'
JSON
数据如下:
json_data= [
{'code': '0101010G0AAABAB',
'items': 2,
'practice': 'N81013',
'name': 'Co-Magaldrox_Susp 195mg/220mg/5ml S/F',
'nic': 5.98,
'act_cost': 5.56,
'quantity': 1000},
{'code': '0101021B0AAAHAH',
'items': 1,
'practice': 'N81013',
'name': 'Alginate_Raft-Forming Oral Susp S/F',
'nic': 1.95,
'act_cost': 1.82,
'quantity': 500},
{'code': '0101021B0AAALAL',
'items': 12,
'practice': 'N81013',
'name': 'Sod Algin/Pot Bicarb_Susp S/F',
'nic': 64.51,
'act_cost': 59.95,
'quantity': 6300},
{'code': '0101021B0AAAPAP',
'items': 3,
'practice': 'N81013',
'name': 'Sod Alginate/Pot Bicarb_Tab Chble 500mg',
'nic': 9.21,
'act_cost': 8.55,
'quantity': 180},
{'code': '0101021B0BEADAJ',
'items': 6,
'practice': 'N81013',
'name': 'Gaviscon Advance_Liq (Peppermint) S/F',
'nic': 28.92,
'act_cost': 26.84,
'quantity': 90},
{'code': '0101021B0BEAIAL',
'items': 15,
'practice': 'N81013',
'name': 'Gaviscon Advance_Liq (Peppermint) S/F',
'nic': 82.62,
'act_cost': 76.67,
'quantity': 7800},
{'code': '0101021B0BEAQAP',
'items': 5,
'practice': 'N81013',
'name': 'Gaviscon Advance_Liq (Peppermint) S/F',
'nic': 13.47,
'act_cost': 12.93,
'quantity': 116},
{'code': '0101021B0BEBEAL',
'items': 10,
'practice': 'N81013',
'name': 'Gaviscon Advance_Liq (Peppermint) S/F',
'nic': 64.0,
'act_cost': 59.45,
'quantity': 6250},
{'code': '0101021B0BIABAH',
'items': 2,
'practice': 'N81013',
'name': 'Sod Algin/Pot Bicarb_Susp S/F',
'nic': 3.9,
'act_cost': 3.64,
'quantity': 1000},
{'code': '0102000A0AAAAAA',
'items': 1,
'practice': 'N81013',
'name': 'Alverine Cit_Cap 60mg',
'nic': 19.48,
'act_cost': 18.05,
'quantity': 100}]
我已经能够识别“name”的唯一值的数量,但我不知道如何从那里开始。以下是我使用的代码:
names =[]
for item in range(len(json_data)):
names.append(json_data[item]['name'])
names=set(names)
names=list(names)
print(len(names))
我希望输出
采用以下格式:
most_common = [("", 0)]
名称加引号,后跟项目总数。
e、 g:
请容忍我。我是Stackoverflow新手,这是我的第一个问题,因此我仍在尝试习惯如何在这里提问。您可以使用计数器。它是集合
模块中的一个类,允许您轻松计算每个项目在集合中出现的次数
>>> from collections import Counter
>>> name_numbers = Counter()
>>> for item in json_data:
... name_numbers[item['name']] += item['items']
...
>>> name_numbers
Counter({'Gaviscon Advance_Liq (Peppermint) S/F': 36, 'Sod Algin/Pot Bicarb_Susp S/F': 14, 'Sod Alginate/Pot Bicarb_Tab Chble 500mg': 3, 'Co-Magaldrox_Susp 195mg/220mg/5ml S/F': 2, 'Alginate_Raft-Forming Oral Susp S/F': 1, 'Alverine Cit_Cap 60mg': 1})
>>> name_numbers.most_common(1)
[('Gaviscon Advance_Liq (Peppermint) S/F', 36)]
谢谢你,格里尼奥。很抱歉,我在问题中给出的示例中,项目数为4。根据给定的数据,项目数应为36,即我们首先根据“名称”拆分数据,然后找到“项目”数最多的组(即我们将每组中的“项目”数相加,以找到项目数最多的组)
>>> from collections import Counter
>>> name_numbers = Counter()
>>> for item in json_data:
... name_numbers[item['name']] += item['items']
...
>>> name_numbers
Counter({'Gaviscon Advance_Liq (Peppermint) S/F': 36, 'Sod Algin/Pot Bicarb_Susp S/F': 14, 'Sod Alginate/Pot Bicarb_Tab Chble 500mg': 3, 'Co-Magaldrox_Susp 195mg/220mg/5ml S/F': 2, 'Alginate_Raft-Forming Oral Susp S/F': 1, 'Alverine Cit_Cap 60mg': 1})
>>> name_numbers.most_common(1)
[('Gaviscon Advance_Liq (Peppermint) S/F', 36)]