【问题标题】:How I read the data in mention format in python with for loop [duplicate]我如何使用for循环在python中读取提及格式的数据[重复]
【发布时间】:2018-10-17 11:41:04
【问题描述】:

我如何使用 for 循环以波纹管格式读取以下数据。

data = [
    [1,'Services',10],
    [2,'Cost Elements',20],
    [3, 'Rules',30],
    [4, 'Manpower', 40]
]

预期的输出是::

p = [
    [1,2,3,4],
    ['services','Cost Elements','Rules','Manpower'],
    [10,20,30,40]
]

还有:

{
        id:1,
        name:'services',
        value:10
    },
    {
        id:2,
        name:'Cost Elements',
        value:20
    },
    {
        id:1,
        name:'Rules',
        value:30
    },
    {
        id:1,
        name:'Manpower',
        value:40
    }

请帮忙..我是python的初学者所以不能..

【问题讨论】:

  • 你能把你的尝试和你得到的结果放在你的问题中吗?

标签: python loops parsing for-loop


【解决方案1】:

使用zip 转置您的列表更容易。

>>> data = [
...     [1,'Services',10],
...     [2,'Cost Elements',20],
...     [3, 'Rules',30],
...     [4, 'Manpower', 40]
... ]
>>> 
>>> p = list(zip(*data))
>>> p
[(1, 2, 3, 4), ('Services', 'Cost Elements', 'Rules', 'Manpower'), (10, 20, 30, 40)]

...或将内部元组额外转换为列表:

>>> p = list(map(list, zip(*data)))
>>> p
[[1, 2, 3, 4], ['Services', 'Cost Elements', 'Rules', 'Manpower'], [10, 20, 30, 40]]

zip 将针对任意数量的可迭代参数将位于相应位置(例如(sublist1[0], sublist2[0], ...))的所有元素组合在一起。

~编辑~

如果它必须是一个for 循环,你可以这样做。

>>> result = [[] for _ in range(len(data[0]))]
>>> 
>>> for sublist in data:
...     for i, element in enumerate(sublist):
...         result[i].append(element)
... 
>>> result
[[1, 2, 3, 4], ['Services', 'Cost Elements', 'Rules', 'Manpower'], [10, 20, 30, 40]]

这很笨重,我不推荐它。

【讨论】:

  • 请先生使用for循环输出
  • @pavan 如果你坚持...
  • 如果我想要这样的话,还有 Guyz:[ { id:1, name:'services', value:10 }, { id:2, name:'Cost Elements', value:20 }, { id:1, name:'规则', value:30 }, { id:1, name:'Manpower', value:40 } ]
  • 谢谢你,先生......请指导我上面一个......今天我学习了很多关于python的知识
  • @pavan 请不要在 cmets 中提出后续问题。不要成为help vampire
猜你喜欢
  • 1970-01-01
  • 2015-11-13
  • 2020-10-18
  • 2014-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多