0

Would there be a way to make the two loops simpler, faster, and cleaner, such as List Comprehension,o(n),etc.

def main:
  a={"res":
       [
        {"group":1,"ins":[{"name":"aa","id":123]},
        {"group":2,"ins":[{"name":"cc","id":456]}
     ]}
   result=[]
  for key in a["res"]:
     for i in key["ins"]
        result.append(i)
  return result

Ckate
  • 47
  • 6

2 Answers2

4

Try this:

result = [i for key in a['res'] for i in key['ins']]
Riccardo Bucco
  • 13,980
  • 4
  • 22
  • 50
0

Try:

import numpy as np

# 3.21 µs ± 23.9 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)    
np.ravel([z["ins"] for z in a["res"]]).tolist()

Outputs:

[{'name': 'aa', 'id': 123}, {'name': 'cc', 'id': 456}]

Edit:

You could also try a faster option:

# 372 ns ± 11.9 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
sum([z["ins"] for z in a["res"]],[])
Multivac
  • 735
  • 6
  • 10