Добавление значений в список в списке в Python - PullRequest
4 голосов
/ 19 января 2012

Я настолько новичок в Python, что единственный способ, которым я могу кодировать, - это слепо размахивать клавиатурой. Поэтому я уверен, что есть веская причина, по которой не работает следующее:

l = []

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

Итак, что я пытаюсь сделать, это взять значение из списка start и добавить его в список в l - этот список будет зависеть от значения grouping. (Затем сделайте то же самое для end). Это требует, чтобы списки в пределах l создавались на лету, что, как я полагаю, является проблемой.

Ответы [ 2 ]

8 голосов
/ 19 января 2012

Вы можете инициировать l как 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]
[]
0 голосов
/ 19 января 2012

Попробуйте начать с

l = [[],[]]

Это даст вам список из двух пустых списков, и вы можете добавить к любому из них, используя код, который вы уже написали.

Редактировать

Как вы упомянули в комментарии, вам потребуется более двух списков.Если вы заранее знаете, сколько вам понадобится, вы можете расширить эту технику следующим образом:

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

Если вы не знаете заранее, хотя или нетне обязательно генерировать хорошие регулярные числа, такие как 0, 1, 2, 3, ..., тогда вам не нужен список списков *.В этом случае вы хотите словарь списков.@ wim ответ - лучшее решение в этом случае.

* Возможно, вместо этого ваши значения grouping будут равны 100, 20000, 300000 и т. Д. Вы действительно в этом случае не нужен список.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...