在Python中向列表中的列表添加值

时间:2012-01-19 06:47:23

标签: python list append

我是Python的新手,到目前为止我能编码的唯一方法就是盲目地挥动我的键盘。所以我确信以下不起作用的原因非常好:

l = []

grouping = compactlist.index(namelist[n])
l[grouping].append(start[n])
l[grouping].append(end[n])

所以我要做的是从start列表中取一个值并将其添加到l中的列表中 - 该列表将依赖于grouping的值。 1}}。 (然后对end执行相同的操作)。这需要动态创建l内的列表,我认为这是问题所在。

2 个答案:

答案 0 :(得分:8)

你可以启动我喜欢l = [[], []],但实际上听起来更像你想使用defaultdict作为你的数据结构。这可以动态创建您的列表,例如

>>> import collections
>>> thing = collections.defaultdict(list)
>>> thing[0].append('spam')
>>> thing[1].append('eggs')
>>> print thing
defaultdict(<type 'list'>, {0: ['spam'], 1: ['eggs']})
>>> thing[0]
['spam']
>>> thing[69]
[]

答案 1 :(得分:0)

尝试从

开始
l = [[],[]]

这将为您提供两个空列表的列表,您可以使用已编写的代码附加到其中任何一个列表。

修改

正如您在评论中提到的,您需要两个以上的列表。如果您事先知道需要多少,那么您可以像这样扩展这种技术:

l = [[] for x in range( number_of_lists )]

如果提前知道,或者如果你不一定能产生好的常规数字,如0,1,2,3 ......,那你就不要想要一份清单*。在这种情况下,您需要一个列表字典。在这种情况下,@ wim的答案是最佳解决方案。

*也许相反,您的grouping值将为100,20000,300000等。在这种情况下,您 确实不想要列表。