【发布时间】:2022-01-15 09:16:16
【问题描述】:
我有两个像这样初始化的数组:
bins = [['1'], ['2'],...['10']]
tasks = ['1:x', '1:y', '2:x', '2:y', '2:z'.... '10:x', '10:y']
我试图遍历 [tasks] 并将 ':' 之前的字符串值与[bins] 中的每个元素进行比较,如果匹配,则将tasks[i] 附加到bins[i]。所以我期待bins 会像这样更新:
bins = [[1, 1:x, 1:y]...[10, 10:x, 10:y]]
然后我认为将 [tasks] 中 ':' 之前的内容分开以进行有效比较是有意义的,所以
我在 ':' 之前拆分了 [tasks] 的内容并创建了一个新数组:
splits = ['1', '1', '2', '2', .....'10', '10']
现在在我的代码中,如果splits[i] 在bins[i] 中,我实际上是在遍历[splits] 并尝试附加tasks[i],使用下面的代码:
for i in range(len(splits)):
if (splits[i] in bins[i]) == True:
bins[i].extend(tasks[i])
问题是上面的代码没有找到任何匹配项(从不返回True),因此bins[i] 没有更新。
我没有正确地遍历我的数组吗?我没有正确比较吗?如何将[bins] 的第一个元素与[splits] 的每个元素进行比较,直到它不匹配并移动到bins[i] 的下一个元素并重复?
【问题讨论】:
-
splits包含字符串;bins包含列表。所以永远不会有比赛。将其中一个的元素更改为另一个的格式(例如,splits将是[[1], [1], [2], [2], .....[10], [10]])会大大简化事情。 -
使用字典进行查找