【问题标题】:How to merge the list of dictionary having keys and values [duplicate]如何合并具有键和值的字典列表[重复]
【发布时间】:2019-12-15 02:46:30
【问题描述】:

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

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

【问题讨论】:

    标签: python dictionary


    【解决方案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】:
      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']}
      

      【讨论】:

      • KeyError: 'Specialized and Location'
      • 单独工作 result={'Name':[x['Name'] for x in r]} print(result).... result={'Specialised and Location':[x[ '专业和位置'] for x in r]} print(result)
      • @maws 我不知道你的错误。
      【解决方案3】:

      你可以试试:

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

      【讨论】:

        猜你喜欢
        • 2020-01-22
        • 1970-01-01
        • 2023-02-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-19
        • 1970-01-01
        相关资源
        最近更新 更多