所以我有一个嵌套列表,想根据条件匹配比较并删除嵌套列表中的列表。
这是我的代码:
def secondValue(val):
return val[1]
if __name__ == '__main__':
nestedList=[]
for _ in range(int(input())):
name = input()
score = float(input())
nestedList.append([name,score]) # Made a nested list from the input
lowestMarks=min(nestedList,key=secondValue) [1] #Extracting the minimum score
newList=[x for x in nestedList[1] if x!=lowestMarks] # PROBLEM HERE
代码的最后一行是我想根据条件匹配在嵌套列表中删除列表的地方。当然,我可以使用嵌套的for循环来做到这一点,但是如果有一种方法可以使用列表理解来做到这一点,我会考虑采用这种方法。
基本上,我希望得到一个答案,该答案告诉您如何根据条件从嵌套列表中删除列表。就我而言,列表如下:
[[test,23],[test2,44],......,[testn,23]]
答案 0 :(得分:2)
问题:
for x in nestedList[1]
只是迭代嵌套列表的第二个子列表。
x
是一个子列表,永远不能等于lowestMarks
。
使用列表理解为:
newList = [[x, y] for x, y in nestedList if y != lowestMarks]
答案 1 :(得分:1)
Mistake在下面一行中,现在已修复。
newList=[x for x in nestedList if x[1] != lowestMarks] # PROBLEM HERE
nestedList [1]获取第二个子列表。您想遍历整个列表。