1

I have list of dictionary below and merge all the dictionaries into one

 r = [{'Name': 'Dr. Tajwar Aamir MD',
      'Specialised and Location': 'Pediatrics, Princeton, NJ'},
     {'Name': 'Dr. Bernard Aaron', 'Specialised and Location': 'Health'},
     {'Name': 'Dr. Joseph Aaron MD',
      'Specialised and Location': 'Internal Medicine, Short Hills, NJ'},
     {'Name': 'Dr. Michael Aaron DO',
      'Specialised and Location': 'Cardiology, Neptune, NJ'}]

result =  {"Name": [], "Specialised and Location": [] for i in r}
#result["Name"].append(Name)
#result["Specialised and Location"].append(Specialised and Location)

Desired Output

{"Name":['Dr. Tajwar Aamir MD','Dr. Bernard Aaron','Dr. Joseph Aaron MD','Dr. Michael Aaron DO'],
"Specialised and Location":['Pediatrics, Princeton, NJ','Health','Internal Medicine, Short Hills, NJ','Cardiology, Neptune, NJ']}

3 Answers3

0
r = [{'Name': 'Dr. Tajwar Aamir MD',
  'Specialised and Location': 'Pediatrics, Princeton, NJ'},
 {'Name': 'Dr. Bernard Aaron', 'Specialised and Location': 'Health'},
 {'Name': 'Dr. Joseph Aaron MD',
  'Specialised and Location': 'Internal Medicine, Short Hills, NJ'},
 {'Name': 'Dr. Michael Aaron DO',
  'Specialised and Location': 'Cardiology, Neptune, NJ'}]
result={'Name':[x['Name'] for x in r], 'Specialised and Location':[x['Specialised and Location'] for x in r]}
print(result)

Output

{'Name': ['Dr. Tajwar Aamir MD', 'Dr. Bernard Aaron', 'Dr. Joseph Aaron MD', 'Dr. Michael Aaron DO'], 'Specialised and Location': ['Pediatrics, Princeton, NJ', 'Health', 'Internal Medicine, Short Hills, NJ', 'Cardiology, Neptune, NJ']}
ComplicatedPhenomenon
  • 4,055
  • 2
  • 18
  • 45
0

Use a simple for-loop

Ex:

r = [{'Name': 'Dr. Tajwar Aamir MD',
      'Specialised and Location': 'Pediatrics, Princeton, NJ'},
     {'Name': 'Dr. Bernard Aaron', 'Specialised and Location': 'Health'},
     {'Name': 'Dr. Joseph Aaron MD',
      'Specialised and Location': 'Internal Medicine, Short Hills, NJ'},
     {'Name': 'Dr. Michael Aaron DO',
      'Specialised and Location': 'Cardiology, Neptune, NJ'}]
result =  {"Name": [], "Specialised and Location": []}

for i in r:
    result["Name"].append(i["Name"])
    result["Specialised and Location"].append(i["Specialised and Location"])

print(result)

or

result =  {"Name": list(map(lambda d: d['Name'], r)), "Specialised and Location": list(map(lambda d: d['Specialised and Location'], r))}

Output:

{'Name': ['Dr. Tajwar Aamir MD',
          'Dr. Bernard Aaron',
          'Dr. Joseph Aaron MD',
          'Dr. Michael Aaron DO'],
 'Specialised and Location': ['Pediatrics, Princeton, NJ',
                              'Health',
                              'Internal Medicine, Short Hills, NJ',
                              'Cardiology, Neptune, NJ']}
Rakesh
  • 81,458
  • 17
  • 76
  • 113
0

you can try:

from collections import defaultdict

my_dict = defaultdict(list)

for k, v in (item for e in r for item in e.items()):
    my_dict[k].append(v)

print(dict(my_dict))

# output: 
# {'Name': ['Dr. Tajwar Aamir MD', 'Dr. Bernard Aaron', 'Dr. Joseph Aaron MD', 'Dr. Michael Aaron DO'], 'Specialised and Location': ['Pediatrics, Princeton, NJ', 'Health', 'Internal Medicine, Short Hills, NJ', 'Cardiology, Neptune, NJ']}
kederrac
  • 16,819
  • 6
  • 32
  • 55