Python 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
数据如下:

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