将项目作为另一个子列表附加到现有列表中的最有效方法是什么。例如,考虑数据['行'] 是一个列表,如下:
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))
,但必须有更好的方法..
答案 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,我认为这意味着密钥不存在。