如何合并具有键和值的字典列表

时间:2019-08-07 12:44:17

标签: python dictionary

我在下面有字典列表,并将所有字典合并为一个

 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)

所需的输出

{"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 个答案:

答案 0 :(得分:1)

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)

输出

{'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']}

答案 1 :(得分:1)

使用简单的for循环

例如:

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)

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

输出:

{'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']}

答案 2 :(得分:1)

您可以尝试:

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']}