python - 遍历多个字符串列表以找到一个公共值
问题描述
我试图想出一些东西来在每个字符串列表中找到子字符串“角度”:
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)
解决方案
你在这里有很多事情要做,但我同意这里有一本字典会更好。
首先,让我们解析列表
dictA = {}
for item in ListA:
row = item.split(" ")
dictA[row[0]] = row[1]
对每个列表执行相同的操作,然后您可以比较字典的值而无需进一步循环。
if dictA['angle'] != to dictC['angle']:
...dostuff...
必要时不要忘记转换为适当的类型
推荐阅读
- ios - 如何修复'操作无法完成。(FairPlayErrorDomain error -42022.)' ,当我调用 [[SKPaymentQueue defaultQueue] addPayment:payment]
- laravel - laravel 项目中的 Composer 版本冲突
- python - 使用字典/表的第一列作为索引/键
- signalr - SignalR Core 集线器与 SignalR .NET 客户端通信?
- javascript - 如何防止用户在电子邮件输入字段中添加空格?
- android - 错误:无法解决:com.android.support:appcompat-v7:23.0.2
- android - 使用 RxJava 执行单元测试时获取 NullPointerException
- proxysql - ProxySQL 设置主机组问题
- apache-flink - Flink fs s3 shaded hadoop:使用 StreamingFileSink 到 S3 时出现 KerberosAuthException
- hive - 在作业执行期间启动的映射器