【问题标题】:Convert a list of tuples into a list of dict将元组列表转换为 dict 列表
【发布时间】:2018-05-28 04:39:42
【问题描述】:

我有一个元组列表:

[('Lebron James', datetime.date(2017, 12, 23), 500),
 ('Julie Peralta', datetime.date(2017, 12, 13), 1500),
 ('Reynaldo Pahay', datetime.date(2017, 12, 11), 2500)]

我想把它转换成字典列表:

[{'Name': 'Lebron James', 'date': datetime.date(2017, 12, 23), 'penalty': 500},
 {'Name': 'Julie Peralta', 'date': datetime.date(2017, 12, 13), 'penalty': 1500},
 {'Name': 'Reynaldo Pahay', 'date': datetime.date(2017, 12, 11), 'penalty': 2500}]

最好和最有效的方法是什么?

【问题讨论】:

    标签: python python-3.x dictionary tuples


    【解决方案1】:

    你可以使用zip函数。

    import datetime
    
    def get_list_of_dict(keys, list_of_tuples):
         """
         This function will accept keys and list_of_tuples as args and return list of dicts
         """
         list_of_dict = [dict(zip(keys, values)) for values in list_of_tuples]
         return list_of_dict
    

    演示

    keys = ("name", "date", "penalty")
    my_list_of_tuples = [
                          ('Lebron James', datetime.date(2017, 12, 23), 500), 
                          ('Julie Peralta', datetime.date(2017, 12, 13), 1500), 
                          ('Reynaldo Pahay', datetime.date(2017, 12, 11), 2500)
                        ]
    
    
    print(get_list_of_dict(keys, my_list_of_tuples))
    #output
    #[{'date': datetime.date(2017, 12, 23), 'penalty': 500, 'name': 'Lebron James'}, {'date': datetime.date(2017, 12, 13), 'penalty': 1500, 'name': 'Julie Peralta'}, {'date': datetime.date(2017, 12, 11), 'penalty': 2500, 'name': 'Reynaldo Pahay'}]
    

    【讨论】:

      【解决方案2】:
      import datetime
      
      data = [('Lebron James', datetime.date(2017, 12, 23), 500), 
              ('Julie Peralta', datetime.date(2017, 12, 13), 1500), 
              ('Reynaldo Pahay', datetime.date(2017, 12, 11), 2500)]
      
      print([{'Name': name, 'date': date, 'penalty': penalty} for name, date, penalty in data])
      # [{'Name': 'Lebron James', 'date': datetime.date(2017, 12, 23), 'penalty': 500}, {'Name': 'Julie Peralta', 'date': datetime.date(2017, 12, 13), 'penalty': 1500}, {'Name': 'Reynaldo Pahay', 'date': datetime.date(2017, 12, 11), 'penalty': 2500}]
      

      【讨论】:

        【解决方案3】:
        import datetime
        lista = [('Lebron James', datetime.date(2017, 12, 23), 500), ('Julie Peralta', datetime.date(2017, 12, 13), 1500), ('Reynaldo Pahay', datetime.date(2017, 12, 11), 2500)]
        output = [{"name":a[0], "date":a[1],'penalty':a[2]} for a in lista]
        print(output)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-07-04
          • 1970-01-01
          • 2021-07-01
          • 1970-01-01
          • 2018-10-14
          • 2012-06-05
          • 1970-01-01
          • 2016-09-28
          相关资源
          最近更新 更多