Python匹配列表中的字符串和递增值

2024-10-02 18:26:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个列表,一个是全局列表,一个是函数中的局部列表

List1 = [[['MP01'], 0], [['MP02'], 0], [['MP03'], 0], [['MP04'], 0], [['MP05'], 0], [['MP06'], 0], [['MP07'], 0], [['MP08'], 0], [['MP09'], 0], [['MP10'], 0], [['MP11'], 0], [['MP12'], 0], [['MP13'], 0], [['MP14'], 0], [['MP15'], 0], [['MP16'], 0], [['MP17'], 0], [['MP18'], 0], [['MP19'], 0], [['MP20'], 0], [['MP21'], 0], [['MP22'], 0], [['MP23'], 0], [['MP24'], 0], [['MP25'], 0], [['MP26'], 0], [['MP27'], 0], [['MP28'], 0], [['MP29'], 0], [['MP30'], 0], [['MP31'], 0], [['MP32'], 0]]

function():
    List2 = [['MP18', 100], ['MP28', 50], ['MP20', 30], ['MP07', 30], ['MP12', 10], ['MP03', 10], ['MP30', 10], ['MP14', 10], ['MP15', 5], ['MP16', 5], ['MP13', 5], ['MP02', 5], ['MP26', 5], ['MP23', 5], ['MP22 ', 5], ['MP01', 5]]

    final_list = [[[a], b+dict(List2).get(a, 0)] for [a], b in List1]

基本上,“List2”表示玩家在一轮游戏中取得的分数(MP18得到100分,MP28得到50分等),而“List1”将用于为每个玩家累积游戏中多轮的分数。你知道吗

我想做的是把每个玩家的得分加到“List1”中,而我遇到的问题是,由于“final\u list”在函数中,每次调用函数并为“List2”生成新值时,除了把新值加到“List1”中,它只会覆盖它们。例如,在第一轮之后,“List1”将有“List2”中玩家的更新值:

['MP18', 100], ['MP28', 50] etc

因此,MP18将有100分,MP28将有50分等。但是,在第二轮的程序运行(第二轮)“列表2”将有不同的值为每个球员例如:

[['MP18, 50], [MP28, 100] etc

但是,因为“final\u list”是从函数内部创建的,所以第一组分数被第二组分数覆盖,而不是将第二组分数添加到第一组分数中,如果这样做有意义的话?因此,在第二次运行时,通过“List1”可以看到:

[[MP28, 100], [MP18, 50]

与期望的结果相反:

[[MP28, 150], [MP18, 150]]

希望这是一个更有帮助的解释:D


Tags: 函数列表玩家分数listfinallist2list1
1条回答
网友
1楼 · 发布于 2024-10-02 18:26:12

你可以试试这个:

List1 = [[['MP01'], 0], [['MP02'], 0], [['MP03'], 0], [['MP04'], 0], [['MP05'], 0], [['MP06'], 0], [['MP07'], 0], [['MP08'], 0], [['MP09'], 0], [['MP10'], 0], [['MP11'], 0], [['MP12'], 0], [['MP13'], 0], [['MP14'], 0], [['MP15'], 0], [['MP16'], 0], [['MP17'], 0], [['MP18'], 0], [['MP19'], 0], [['MP20'], 0], [['MP21'], 0], [['MP22'], 0], [['MP23'], 0], [['MP24'], 0], [['MP25'], 0], [['MP26'], 0], [['MP27'], 0], [['MP28'], 0], [['MP29'], 0], [['MP30'], 0], [['MP31'], 0], [['MP32'], 0]]

List2 = [['MP18', 100], ['MP28', 50], ['MP20', 30], ['MP07', 30], ['MP12', 10], ['MP03', 10], ['MP30', 10], ['MP14', 10], ['MP15', 5], ['MP16', 5], ['MP13', 5], ['MP02', 5], ['MP26', 5], ['MP23', 5], ['MP22 ', 5], ['MP01', 5]]
final_list = [[[a], b+dict(List2).get(a, 0)] for [a], b in List1]

然后,稍后,将列表中的值相乘:

new_final_list = [[[a], 2*b] for [a], b in List1]

输出:

[[['MP01'], 0], [['MP02'], 0], [['MP03'], 0], [['MP04'], 0], [['MP05'], 0], [['MP06'], 0], [['MP07'], 0], [['MP08'], 0], [['MP09'], 0], [['MP10'], 0], [['MP11'], 0], [['MP12'], 0], [['MP13'], 0], [['MP14'], 0], [['MP15'], 0], [['MP16'], 0], [['MP17'], 0], [['MP18'], 0], [['MP19'], 0], [['MP20'], 0], [['MP21'], 0], [['MP22'], 0], [['MP23'], 0], [['MP24'], 0], [['MP25'], 0], [['MP26'], 0], [['MP27'], 0], [['MP28'], 0], [['MP29'], 0], [['MP30'], 0], [['MP31'], 0], [['MP32'], 0]]

编辑:

关于您最近的评论,您可以尝试在函数外创建final_list

List1 = [[['MP01'], 0], [['MP02'], 0], [['MP03'], 0], [['MP04'], 0], [['MP05'], 0], [['MP06'], 0], [['MP07'], 0], [['MP08'], 0], [['MP09'], 0], [['MP10'], 0], [['MP11'], 0], [['MP12'], 0], [['MP13'], 0], [['MP14'], 0], [['MP15'], 0], [['MP16'], 0], [['MP17'], 0], [['MP18'], 0], [['MP19'], 0], [['MP20'], 0], [['MP21'], 0], [['MP22'], 0], [['MP23'], 0], [['MP24'], 0], [['MP25'], 0], [['MP26'], 0], [['MP27'], 0], [['MP28'], 0], [['MP29'], 0], [['MP30'], 0], [['MP31'], 0], [['MP32'], 0]]

def some_function():
    List2 = [['MP18', 100], ['MP28', 50], ['MP20', 30], ['MP07', 30], ['MP12', 10], ['MP03', 10], ['MP30', 10], ['MP14', 10], ['MP15', 5], ['MP16', 5], ['MP13', 5], ['MP02', 5], ['MP26', 5], ['MP23', 5], ['MP22 ', 5], ['MP01', 5]]
    global List1
    List1 = [[[a], b+dict(List2).get(a, 0)] for [a], b in List1]

相关问题 更多 >