【问题标题】:Python variable List populationPython变量列表人口
【发布时间】:2013-06-08 16:30:45
【问题描述】:

我正在尝试从 python 中的 excel 文件中读取一些数据

我想把数据放到一个二维列表中

[[A,1,2...],[B,2,3...],[C,5,6...]]

其中 A、B、C 是列标题,数字是该列中的行

现在我只是用来测试这是否会起作用,所以我知道代码并没有完全按照我上面所说的那样做

#Blank list array
product = []
k = 0
#Read in Data
for r in range(1,sheet.nrows):
    k += 1;
    product[k,1] = sheet.cell(r,1).value

我收到错误说列表索引必须是整数,而不是元组 有没有办法用变量填充这样的列表,因为我不知道 excel 文件中的列可能有多少行 我听说过字典,但从我读过的内容来看,我认为这些对我来说不是最好的选择,因为它们更像是“键”“值”,而且我对一个“键”有多个值

【问题讨论】:

  • product[k,1] 更改为product[k][1]
  • 您可以使用字典完成此操作,请参阅:stackoverflow.com/questions/5378231/…
  • @Kathikr 现在我的列表索引超出范围
  • Andrea 他/她不是已经在其中填写了他的列表吗?我基本上需要填充我的列表,我不知道需要多长时间
  • 你想在那里做什么

标签: python list dictionary indexing populate


【解决方案1】:

字典适合你,因为每个值都可以是一个列表。

product = {}
for col in range(sheet.ncols):
    values = []
    for row in range(1, sheet.nrows):
        values.append(sheet.cell(row, col).value)
    product[sheet.cell(0, col)] = values

这将允许您通过列标签访问任何列的值列表。

> print product['B']
> [1, 4, 2, 6, 7]

编辑:修改为从解析行改为列。

【讨论】:

  • 似乎它可以通过一些调整来工作,你的解析是我想要做的事情......我想解析 column1 中的每一行,然后解析 column2 中的每一行,你正在解析每一列在第 1 行,依此类推...我尝试使用范围内的 col 代码(sheet.ncols): values = [] for row in range(sheet.nrows): values.append(sheet.cell(row, col). value) product[col] = values print product[1] 当我打印 product[1] 时我得到了时髦的结果:[u'B',3.0,4.0] 我认为 value.append 只适用于整数,所以它告诉我 u'B' 它是一个字符串?
  • 对于我无法在此评论框中正确显示的可怕格式感到抱歉
  • 不,这工作正常。字符串开头的 'u' 只是表示它是一个 unicode 字符串。我将添加一个编辑来交换事物的解析方式。
  • 我当前的 sn-p 假设您不希望标签值作为信息列中的值之一。
猜你喜欢
  • 2017-08-10
  • 1970-01-01
  • 1970-01-01
  • 2013-09-04
  • 1970-01-01
  • 2014-01-10
  • 2015-11-15
  • 2012-08-18
  • 2012-06-22
相关资源
最近更新 更多