2014-12-17 3 views
1

Я хочу, чтобы добавить дополнительное время '10: 01' для J Petry к следующему списку:добавление в список списков

PlayerMatrix = [["['J. Petry', '24:17']"], ["['G. Chase', '11:03']"]] 

, поэтому я хочу, чтобы получить выход ......

PlayerMatrix = [["['J. Petry', '24:17', '10:01']"], ["['G. Chase', '11:03']"]] 

Я попытался

PlayerMatrix[0].append("10:01") 

и это дает мне .......

PlayerMatrix = [["['J. Petry', '24:17']", '10:01'], ["['G. Chase', '11:03']"]] 

т.е. вместо того, чтобы добавлять его в первый список, он создает второй список. Должно быть что-то простое, я делаю неправильно .....

+1

Ваш первый «список» не 'list' а в' string' – user2097159

+0

Странно, у вас есть строковые представления списков. Вы уверены, что это правильно? – iCodez

ответ

1

Как ваш элемент, вы не можете использовать append для этой цели. Вы можете использовать модуль ast:

>>> import ast 
>>> a=ast.literal_eval(PlayerMatrix[0][0]) 
>>> a 
['J. Petry', '24:17'] 
>>> a.append("10:01") 
>>> a 
['J. Petry', '24:17', '10:01'] 

, а затем вы можете конвертировать результат в строку:

>>> str(a) 
"['J. Petry', '24:17', '10:01']" 
+1

Я не знал про 'ast.literal_eval', хороший ответ. +1 –

+0

Большое спасибо - очень полезно – FamousSam

+0

@FamousSam, пожалуйста, если вы найдете этот ответ полезным, вы можете сообщить об этом сообществу, приняв ответ и голосуя. – Kasramvd

0

Одд формат у вас есть там. Решение:

PlayerMatrix = [["['J. Petry', '24:17']"], ["['G. Chase', '11:03']"]] 
# used to serialize/deserialize - probably should have functions for that 
import json 
def append_to_player(matrix, player, t): 
    # parse your format 
    parsed = [json.loads(v[0].replace("'", '"')) for v in matrix] 
    for p in parsed: 
     # add the value to 'player' 
     if p[0] == player: 
      p.append(t) 
    # reformat and return 
    return [[json.dumps(v).replace('"', "'")] for v in parsed] 

# TEST 
# alter matrix by assignment of result 
PlayerMatrix = append_to_player(PlayerMatrix, "J. Petry", '13;37') 
print PlayerMatrix 
+0

Спасибо большое! – FamousSam

Смежные вопросы