首页 > 解决方案 > 如何在 Python 中解决这个函数?

问题描述

我正在编写一个 python 程序,在其中输入两个参数:一个是字符串列表,第二个是列表列表。我想返回一个新的字典列表,这个例子可以解释:

输入: dic_list_gen(["administered_janssen", "administered_unk_manuf", "date", "administered_pfizer", "location"], [[481366, "2021-02-15T00:00:00.000", "LA", 668, 0] , ["NV", 0, 805475, "2021-04-06T00:00:00.000", 37820], [4549654, "AZ", 13413, "2021-09-28T00:00:00.000", 288209], [ 288865, "2021-04-26T00:00:00.000", 4283531, 7149, "OH"], ["2021-06-21T00:00:00.000", 2984, 3283082, 213637, "CO"], ["2021 -06-04T00:00:00.000", 1468455, 99716, "AL", 0], ["DC", 17414, 275181, "2021-04-14T00:00:00.000", 0]])

预期输出:[{“administered_janssen”:481366,“administered_unk_manuf”:“2021-02-15T00:00:00.000”,“日期”:“LA”,“administered_pfizer”:668,“位置”:0},{“ managed_janssen”:“NV”,“administered_unk_manuf”:0,“日期”:805475,“administered_pfizer”:“2021-04-06T00:00:00.000”,“位置”:37820},{“administered_janssen”:4549654,“ managed_unk_manuf”:“AZ”,“日期”:13413,“administered_pfizer”:“2021-09-28T00:00:00.000”,“位置”:288209},{“administered_janssen”:288865,“administered_unk_manuf”:“2021- 04-26T00:00:00.000”,“日期”:4283531,“administered_pfizer”:7149,“位置”:“OH”},{“administered_janssen”:“2021-06-21T00:00:00.000”,“administered_unk_manuf”:2984,“日期”:3283082,“administered_pfizer”:213637,“位置”:“CO” },{“administered_janssen”:“2021-06-04T00:00:00.000”,“administered_unk_manuf”:1468455,“日期”:99716,“administered_pfizer”:“AL”,“位置”:0},{“administered_janssen” :“DC”,“administered_unk_manuf”:17414,“日期”:275181,“administered_pfizer”:“2021-04-14T00:00:00.000”,“位置”:0}]“administered_pfizer”:213637,“位置”:“CO”},{“administered_janssen”:“2021-06-04T00:00:00.000”,“administered_unk_manuf”:1468455,“日期”:99716,“administered_pfizer”:“AL ”,“位置”:0},{“administered_janssen”:“DC”,“administered_unk_manuf”:17414,“日期”:275181,“administered_pfizer”:“2021-04-14T00:00:00.000”,“位置”: 0}]“administered_pfizer”:213637,“位置”:“CO”},{“administered_janssen”:“2021-06-04T00:00:00.000”,“administered_unk_manuf”:1468455,“日期”:99716,“administered_pfizer”:“AL ”,“位置”:0},{“administered_janssen”:“DC”,“administered_unk_manuf”:17414,“日期”:275181,“administered_pfizer”:“2021-04-14T00:00:00.000”,“位置”: 0}]“administered_unk_manuf”:17414,“日期”:275181,“administered_pfizer”:“2021-04-14T00:00:00.000”,“位置”:0}]“administered_unk_manuf”:17414,“日期”:275181,“administered_pfizer”:“2021-04-14T00:00:00.000”,“位置”:0}]

我的输出: [{'administered_janssen': 'DC', 'administered_unk_manuf': 17414, 'date': 275181, 'administered_pfizer': '2021-04-14T00:00:00.000', 'location': 0}, {' managed_janssen':'DC','administered_unk_manuf':17414,'日期':275181,'administered_pfizer':'2021-04-14T00:00:00.000','位置':0},{'administered_janssen':'DC' , 'administered_unk_manuf': 17414, '日期': 275181, 'administered_pfizer': '2021-04-14T00:00:00.000', '位置': 0}, {'administered_janssen': 'DC', 'administered_unk_manuf': 17414 , '日期': 275181, 'administered_pfizer': '2021-04-14T00:00:00.000', '位置': 0}, {'administered_janssen': 'DC','administered_unk_manuf':17414,'日期':275181,'administered_pfizer':'2021-04-14T00:00:00.000','位置':0},{'administered_janssen':'DC','administered_unk_manuf' :17414,'日期':275181,'administered_pfizer':'2021-04-14T00:00:00.000','位置':0},{'administered_janssen':'DC','administered_unk_manuf':17414,'日期' : 275181, 'administered_pfizer': '2021-04-14T00:00:00.000', '位置': 0}]managed_pfizer': '2021-04-14T00:00:00.000', 'location': 0}, {'administered_janssen': 'DC', 'administered_unk_manuf': 17414, 'date': 275181, 'administered_pfizer': '2021- 04-14T00:00:00.000','位置':0}]managed_pfizer': '2021-04-14T00:00:00.000', 'location': 0}, {'administered_janssen': 'DC', 'administered_unk_manuf': 17414, 'date': 275181, 'administered_pfizer': '2021- 04-14T00:00:00.000','位置':0}]

我的代码:

def dic_list_gen(los,l):
  d = []
  k = {}
  i = 0
  for x in l:
    i = 0
    for r in los:
      k[r] = x[i]
      i = i+1
    d.append(k)

  return d

先感谢您。

标签: pythonlistdictionary

解决方案


只是zip每个子列表的标题并将结果转换为字典。

>>> def dic_list_gen(headers, data):
...     return [dict(zip(headers, i)) for i in data]
...
>>> dic_list_gen(["administered_janssen", "administered_unk_manuf", "date", "administered_pfizer", "location"], [[481366, "2021-02-15T00:00:00.000", "LA", 668, 0], ["NV", 0, 805475, "2021-04-06T00:00:00.000", 37820], [4549654, "AZ", 13413, "2021-09-28T00:00:00.000", 288209], [288865, "2021-04-26T00:00:00.000", 4283531, 7149, "OH"], ["2021-06-21T00:00:00.000", 2984, 3283082, 213637, "CO"], ["2021-06-04T00:00:00.000", 1468455, 99716, "AL", 0], ["DC", 17414, 275181, "2021-04-14T00:00:00.000", 0]])
[{'administered_janssen': 481366, 'administered_unk_manuf': '2021-02-15T00:00:00.000', 'date': 'LA', 'administered_pfizer': 668, 'location': 0}, {'administered_janssen': 'NV', 'administered_unk_manuf': 0, 'date': 805475, 'administered_pfizer': '2021-04-06T00:00:00.000', 'location': 37820}, {'administered_janssen': 4549654, 'administered_unk_manuf': 'AZ', 'date': 13413, 'administered_pfizer': '2021-09-28T00:00:00.000', 'location': 288209}, {'administered_janssen': 288865, 'administered_unk_manuf': '2021-04-26T00:00:00.000', 'date': 4283531, 'administered_pfizer': 7149, 'location': 'OH'}, {'administered_janssen': '2021-06-21T00:00:00.000', 'administered_unk_manuf': 2984, 'date': 3283082, 'administered_pfizer': 213637, 'location': 'CO'}, {'administered_janssen': '2021-06-04T00:00:00.000', 'administered_unk_manuf': 1468455, 'date': 99716, 'administered_pfizer': 'AL', 'location': 0}, {'administered_janssen': 'DC', 'administered_unk_manuf': 17414, 'date': 275181, 'administered_pfizer': '2021-04-14T00:00:00.000', 'location': 0}]

推荐阅读