python - 追加项目始终列为子列表

时间:2015-03-11 23:09:15

标签: python list append

将项目作为另一个子列表附加到现有列表中的最有效方法是什么。例如,考虑数据['行'] 是一个列表,如下:

 for indx, row in enumerate(my_data):
    data['rows'].append(row) 

当行已经是列表时执行作业。

> 'Rows': [['150', '01'], ['10', '02'], ['22', '03'], ['33', '4'] ...

但是如果中的值不是列表,则会产生:

> 'Rows': ['150', '10', '22', '33', '44', '15']

我的条件是,如果某行不是列表,则使用data['Rows'].append(list(row)),但必须有更好的方法..

2 个答案:

答案 0 :(得分:1)

如果我理解你的问题,比如

  

我有一个元素列表,这些元素可能已经是列表,它们可能不是。如果它们是列表,我希望它们如此附加。如果他们不是列表,我希望它们包含在列表中,然后我想要附加生成的单元素列表。

这也是我一直在努力的事情,我能想出的最好的东西是:

elems = [1,2,[3,4],5]

data1 = []
for e in elems:
    data1.append(e if isinstance(e, list) else [e,])
print data1

# Or with a lambda function that does the work for you
wrap = lambda x: x if isinstance(x, list) else [x,]

data2 = []
for e in elems:
    data2.append(wrap(e))
print data2

两个输出:

[[1], [2], [3, 4], [5]]

答案 1 :(得分:0)

如果我理解你的问题,你可以这样做:

data['Rows']=data.get('Rows', []).append(list(row))

如果列表中没有列表,则会创建列表。

您可以考虑重新提出问题以使其更清晰。你说"如果它不是一个列表",但它不清楚它是什么。由于您正在使用dicts,我认为这意味着密钥不存在。