У меня есть входной вложенный dict следующим образом:
{'name': 'Mark', 'marks':[{'english':20, 'maths':25},{'english':50, 'maths':55}]}
Ожидаемый вывод выглядит следующим образом:
[{'name': 'Mark', 'english':23, 'maths':35}, {{'name': 'Mark', 'english':50, 'maths':55}]
Мой код выглядит следующим образом:
In [22]: input = {'name': 'Mark', 'marks':[{'english':20, 'maths':25},{'english':50, 'maths':55}]}
In [23]: marks = input.pop('marks')
In [24]: output = []
In [25]: for mark in marks:
...: output.append({**input, **mark})
...:
In [26]: output
Out[26]:
[{'english': 20, 'maths': 25, 'name': 'Mark'},
{'english': 50, 'maths': 55, 'name': 'Mark'}]
Работает, как и ожидалось. Однако, это работает только для python 3.5 и выше, поскольку {** x, ** y} для объединения 2 dicts было введено только из этой версии.
Кроме того, мой набор данных огромен, и я не уверен, является ли это наиболее эффективным способом для достижения этого. Каков наилучший способ для достижения этого Python 2.7.Я также открыт для использования внешних библиотек, таких как Pandas
и numpy
.