JSON d中最常见(最大)项

2024-09-30 08:32:32 发布

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

如何根据“name”将这些JSON数据拆分为多个组,并对每个组中的“items”数量求和,以便找到最常见的名称(基于项数)。我处理的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'的唯一values的编号,但是我不知道如何从那里开始。以下是我使用的代码:

names =[]

for item in range(len(json_data)):
    names.append(json_data[item]['name'])

names=set(names)
names=list(names)

print(len(names))

我希望output的格式如下:

most_common = [("", 0)]

名称加引号,后跟项目总数。
e、 克:

most_common = [("Gaviscon Advance_Liq (Peppermint) S/F", 36)]

请容忍我。我是Stackoverflow的新手,这是我的第一个问题,所以我还在试着习惯如何在这里提问。你知道吗


Tags: namenamescodeitemsactquantitycostnic
1条回答
网友
1楼 · 发布于 2024-09-30 08:32:32

您可以使用Counter。它是collections模块中的一个类,允许您轻松计算每个项在集合中出现的次数。你知道吗

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

相关问题 更多 >

    热门问题