簡體   English   中英

附加到列表列表

[英]appending to a list of lists

我想將J Petry的額外時間“ 10:01”添加到以下列表中:

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']"]]

即創建第二個列表而不是將其添加到第一個列表。 我做錯了一定很簡單.....

由於您的元素是字符串,因此不能將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']

然后可以將結果轉換為string:

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

您那里有奇數格式。 解決方案:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM