我有两个列表:
list_a = [["the", "ball", "is", "red", "and", "the", "car", "is", "red"],
["the", "boy", "is", "tall", "and", "the", "man", "is", "tall"]]
list_b = [["the", 0], ["ball", 0], ["is", 0], ["red", 0], ["and", 0], ["car", 0]],
["The", 0], ["boy", 0], ["is", 0], ["and", 0], ["man", 0], ["tall", 0]]
目标:
在list_b
上迭代,拾取特定的string
并检查它是否在list_a
中,如果是,则将特定的int
增加1。在这种情况下,重要的是我只将list_a[0]
与list_b[0]
以及list_a[1]
与list_b[1]
进行比较。完成后应该是这样的:
list_a = [["the", "ball", "is", "red", "and", "the", "car", "is", "red"],
["the", "boy", "is", "tall", "and", "the", "man", "is", "tall"]]
list_b = [["the", 2], ["ball", 1], ["is", 2], ["red", 2], ["and", 1], ["car", 1]],
["the", 2], ["boy", 1], ["is", 2], ["and", 1], ["man", 1], ["tall", 2]]
for loops
给我带来了巨大的问题,这种方法似乎是错误的,不适合这项任务,所以我对不同的解决方案持开放态度并表示感谢。
您可以使用enumerate
并在list_b
和baserow_index中查找每行的索引,对list_a
使用collections.Counter
并更新list_b
中每行的每个子列表中的值。
from collections import Counter
for row, lst_b in enumerate(list_b):
cnt_list_a = Counter(list_a[row])
for lst in lst_b:
lst[1] = cnt_list_a[lst[0].lower()]
print(list_b)
输出:
[
[['the', 2], ['ball', 1], ['is', 2], ['red', 2], ['and', 1], ['car', 1]],
[['The', 2], ['boy', 1], ['is', 2], ['and', 1], ['man', 1], ['tall', 2]]
]