【问题标题】:How to iterate through an array and a list of tuples making a list of dictionaries in Python?如何遍历数组和元组列表,在 Python 中创建字典列表?
【发布时间】:2021-01-06 07:15:24
【问题描述】:

在 python 中,您将如何遍历列表(列名)和元组列表(行值)以构建字典列表?键总是从第一个数组生成,值从每个元组生成?

col = ['id', 'username', 'email']
rows = [('1234', 'first', 'first@email.com'), ('5678', 'second', 'second@email.com')]

result = [{'id':'1234', 'username':'first', 'email':'first@email.com'},{'id':'5678', 'username':'second', 'email':'second@email.com'}]

【问题讨论】:

标签: python python-3.x dictionary tuples


【解决方案1】:

这是一种方法:

[dict(zip(col, row)) for row in rows]

这是如何工作的:

  • [... for row in rows] 部分循环遍历rows 列表以构造一个新列表。
  • zip(col, row) 匹配 colrow 的对应项,所以我们最终得到 [('id', '1234'), ('username', 'first'), ...]
  • 最后,dict(...) 将元组列表转换为字典。

【讨论】:

    【解决方案2】:

    你可以这样做:

    col = ['id', 'username', 'email']
    rows = [('1234', 'first', 'first@email.com'), ('5678', 'second', 'second@email.com')]
    
    result = [dict(zip(col, i)) for i in rows]
    

    给予

    [{'id': '1234', 'username': 'first', 'email': 'first@email.com'}, {'id': '5678', 'username': 'second', 'email': 'second@email.com'}]
    

    【讨论】:

      【解决方案3】:

      你可以使用zip()函数:

      [in]: 
      col = ['id', 'username', 'email']
      rows = [('1234', 'first', 'first@email.com'), ('5678', 'second', 'second@email.com')]
      result = [dict(zip(col, r)) for r in rows]
      
      
      [out]: 
      [{'id': '1234', 'username': 'first', 'email': 'first@email.com'}, {'id': '5678', 'username': 'second', 'email': 'second@email.com'}]
      

      【讨论】:

        【解决方案4】:

        我猜这就是你所期望的:

        result = []
        for i,rowsv in enumerate(rows):
          row_num=0
          for colv in col:
            if(row_num==0):
              result.append("{"+colv+":"+rowsv[row_num])
            elif(row_num== len(col)-1):
              result.append(colv+":"+rowsv[row_num]+"}")
            else:
              result.append(colv+":"+rowsv[row_num])
            row_num+=1
        print(result)
        

        输出:

        ['{id:1234', 'username:first', 'email:first@email.com}', '{id:5678', 'username:second', 'email:second@email.com}']
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-24
          • 2020-04-27
          • 2017-05-07
          • 2021-11-22
          • 1970-01-01
          • 2019-11-16
          相关资源
          最近更新 更多