我是Python的新手,到目前为止我能编码的唯一方法就是盲目地挥动我的键盘。所以我确信以下不起作用的原因非常好:
l = []
grouping = compactlist.index(namelist[n])
l[grouping].append(start[n])
l[grouping].append(end[n])
所以我要做的是从start
列表中取一个值并将其添加到l
中的列表中 - 该列表将依赖于grouping
的值。 1}}。 (然后对end
执行相同的操作)。这需要动态创建l
内的列表,我认为这是问题所在。
答案 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等。在这种情况下,您 确实不想要列表。