首页 > 解决方案 > 遍历多个字符串列表以找到一个公共值

问题描述

我试图想出一些东西来在每个字符串列表中找到子字符串“角度”:

ListA = ['angle 45', 'color red', 'inside t']

ListB = ['angle 135', 'color blue', 'inside f']

ListC = ['above r', 'angle 315', 'color pink', 'inside o']

我需要添加几张支票

1) 仅当所有 3 个列表中都存在“角度”时

2) 如果 listA 的“角度”值不等于 listC 的角度值,

然后获取 listC 的角度值,减去 90 并将新字符串放回列表中。所以,listC 现在看起来像:

ListC = ['above r', 'angle 225', 'color red', 'inside r']

我尝试在空白处拆分这些列表以创建如下列表:

['angle', '45', 'color', 'red', 'inside', 't']

但是,我很难遍历所有 3 个列表,然后进行后续检查,提取值并替换。我想知道是否需要创建一个新的字典或列表才能完全实现这一点。

更新 这就是我在所有三个列表中检查“角度”然后进一步拆分每个列表的内容。我还没有弄清楚现在我已经从它的值中分割了角度,我不确定我如何检查 listA 的角度值不等于 listB 的值。我还没有得到价值,更新它并把它放回去。

if any("angle " in s for s in listA) and any("angle " in s for s in listB) \
    and any("angle" in s for s in listC):
    listASplit = []
    for word in listA:
        word = word.split(" ")
        listASplit.extend(word)

    listBSplit = []
    for word in listB:
        word = word.split(" ")
        listBSplit.extend(word)

    listCSplit = []
    for word in listC:
        word = word.split(" ")
        listCSplit.extend(word)

标签: pythonlist

解决方案


你在这里有很多事情要做,但我同意这里有一本字典会更好。

首先,让我们解析列表

dictA = {}

for item in ListA:
    row = item.split(" ")
    dictA[row[0]] = row[1] 

对每个列表执行相同的操作,然后您可以比较字典的值而无需进一步循环。

if dictA['angle'] != to dictC['angle']:
    ...dostuff...

必要时不要忘记转换为适当的类型


推荐阅读