fork download
  1. test=[
  2. {'is_blocked': 0, 'ip': '10.10.10.1', 'id': 113},
  3. {'is_blocked': 0, 'ip': '10.10.10.16', 'id': 113},
  4. {'is_blocked': 0, 'ip': '10.10.10.1', 'id': 114},
  5. {'is_blocked': 0, 'ip': '10.10.10.16', 'id': 115},
  6. {'is_blocked': 0, 'ip': '10.10.10.1', 'id': 114},
  7. {'is_blocked': 0, 'ip': '10.10.10.16', 'id': 116}
  8. ]
  9. def f(arr):
  10. vals, ips, res=[], [], []
  11. for i in arr:
  12. ip= i['ip']
  13. i2=i.copy()
  14. del i2['ip']
  15. try:
  16. ips[vals.index(i2)]+= ","+ip
  17. except:
  18. vals.append(i2)
  19. ips.append(ip)
  20. for i in range(len(vals)):
  21. vals[i]['ip']=ips[i]
  22. res.append(vals[i])
  23. return res
  24. print str(f(test)).replace('}, {', '}, \n{')
Success #stdin #stdout 0.08s 8888KB
stdin
Standard input is empty
stdout
[{'ip': '10.10.10.1,10.10.10.16', 'is_blocked': 0, 'id': 113}, 
{'ip': '10.10.10.1,10.10.10.1', 'is_blocked': 0, 'id': 114}, 
{'ip': '10.10.10.16', 'is_blocked': 0, 'id': 115}, 
{'ip': '10.10.10.16', 'is_blocked': 0, 'id': 116}]