Я пытаюсь добавить значения в список, где ключ является кортежем. Но я продолжаю получать keyError, потому что словарь в python не может получить доступ к кортежу в качестве ключа.
Примечание: что я пытаюсь сделать:
- У меня есть json файл. Я пытаюсь сгруппировать по n пунктов, которые будут моим ключом для словаря. Затем я верну соответствующий список словаря для ключа кортежа.
- Я пытаюсь сделать это в функции.
Найдите мой пример кода ниже:
def group_by_field(data, fields):
if len(fields) > 1:
groups = {fields: []}
for parameter in data:
for k, v in groups.items():
for i in fields:
if i in k:
groups[parameter[k]].append(parameter)
return groups
Ниже приведен пример, где я пытаюсь реализовать функцию:
group_by_field(scripts, ('bnf_name', 'bnf_code'))
, где scripts
- это json файл
Вот что такое json объект, scripts
, выглядит так:
[{'bnf_code': '0101010G0AAABAB',
'items': 2,
'practice': 'N81013',
'bnf_name': 'Co-Magaldrox_Susp 195mg/220mg/5ml S/F',
'nic': 5.98,
'act_cost': 5.56,
'quantity': 1000},
{'bnf_code': '0101021B0AAAHAH',
'items': 1,
'practice': 'N81013',
'bnf_name': 'Alginate_Raft-Forming Oral Susp S/F',
'nic': 1.95,
'act_cost': 1.82,
'quantity': 500}]
Вот как должен выглядеть пример вывода:
{('Co-Magaldrox_Susp 195mg/220mg/5ml S/F', '0101010G0AAABAB'): [{'bnf_code': '0101010G0AAABAB',
'items': 2,
'practice': 'N81013',
'bnf_name': 'Co-Magaldrox_Susp 195mg/220mg/5ml S/F',
'nic': 5.98,
'act_cost': 5.56,
'quantity': 1000}],
('Alginate_Raft-Forming Oral Susp S/F', '0101021B0AAAHAH'): [{'bnf_code': '0101021B0AAAHAH',
'items': 1,
'practice': 'N81013',
'bnf_name': 'Alginate_Raft-Forming Oral Susp S/F',
'nic': 1.95,
'act_cost': 1.82,
'quantity': 500}]