【问题标题】:Equivalent to JavaScript mapping for python? [duplicate]相当于python的JavaScript映射? [复制]
【发布时间】:2022-01-03 22:44:36
【问题描述】:

有人可以帮我找到一种在 python 中执行以下功能的方法吗?

我确实认为我可以使用带有索引的 for 循环并这样做,但 python 列表理解可能有更简单的方法

let rows = [['10kg', '12.5', '1.25', '8'], 
  ['25kg', '28.75', '1.15', '6'], 
  ['50kg', '50', '1.0', '5'], 
  ['100kg', '100', '1.0', '3'], 
  ['250kg', '250', '1.0', '5'], 
  ['500kg', '500', '1.0', '5'], 
  ['1liter', '1000', '1.0', '5']];

let labels = ["Weight","Price","Price Per","Amount"];

let values = rows.map((row, idx) => {
  let d = {id: idx};
  row.forEach((c, i) => d[labels[i]] = c);
  return d;
});

console.log(values)

let columns = labels.map(l => ({field: l, width: 150}));

console.log(columns);

【问题讨论】:

    标签: javascript python


    【解决方案1】:

    在 Python 中,您可以使用 dict(zip(keys, values)) 从两个列表的对应元素创建一个字典。

    values = [dict(zip(labels, row), id=idx) for idx, row in enumerate(rows)]
    columns = [{'field': l, 'width': 150} for l in labels]
    

    【讨论】:

      【解决方案2】:

      也许这是我能为你做的最好的事情

      rows = [['10kg', '12.5', '1.25', '8'], 
        ['25kg', '28.75', '1.15', '6'], 
        ['50kg', '50', '1.0', '5'], 
        ['100kg', '100', '1.0', '3'], 
        ['250kg', '250', '1.0', '5'], 
        ['500kg', '500', '1.0', '5'], 
        ['1liter', '1000', '1.0', '5']]
      
      labels = ["Weight","Price","Price Per","Amount"]
      
      values = []
      for y,i in enumerate(rows):
          a = {}
          a["id"] = y
          for index,x in enumerate(i):
              a[labels[index]] = x
          values.append(a)
          
      print(values)
      
      columns = [{"fields": i, "width":150} for i in labels]
      print(columns)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-25
        • 2011-12-17
        • 2014-10-23
        • 2010-10-10
        • 2010-09-07
        • 2013-04-13
        • 1970-01-01
        • 2011-05-16
        相关资源
        最近更新 更多