繁体   English   中英

检查python中的另一个列表中是否存在数字

[英]Check if a number exists in another list in python

我有两个列表,其中包含以下类型的信息。

List #1:
Request = ["1/1/1.34", "1/2/1.3.5", "1/3/1.2.3", ...same format elements]
List #2:
Reply = ["1/1/0", "1/3/1", "1/2/0", ...same format elements]

从“回复”列表中,我希望能够比较“#/#/#”中的第二项,在这种情况下它将是1,3,2,依此类推回复列表中的所有项目并检查“请求列表”中的第二项是否匹配。 如果存在匹配,那么我希望能够返回一个新列表,该列表将包含请求字符串中第三个索引的信息,该字符串附加了回复中匹配字符串的第三个索引。

The result would be like the following. 
Result = ["1.34.0", "1.3.5.0", "1.2.3.1"] 

请注意,0附加到1.34,1附加到1.3.4,0从“Reply”列表中的相应索引附加到1.2.3,因为第二个索引存在于“Reply”列表中。 “回复”列表可以将项目放在列表中的任何位置。

我无法找到一种简单的方法来逐个比较第二个索引的列表。 我真的很困惑,如果有人能帮助我,我将不胜感激。

谢谢

您还可以使用列表推导和字符串比较来构建它:

res = [f"{i.split('/')[-1]}.{j.split('/')[-1]}" \
                      for i in Request for j in Reply \
                      if i.split('/')[1] == j.split('/')[1] ]

res
Out[1]:
['1.34.0', '1.3.5.0', '1.2.3.1']

您可以尝试只获取您感兴趣的项目然后进行比较。 像这样的东西:

iRequest = {}
for x in Request:
    iRequest[x.split('/')[1]] = x

那会给你一个字典看起来像这样:

{'1':'1/1/1.34', '2':'1/2/1.35', ...and so on}

在使用“ Reply列表执行相同操作后,您可以浏览新iReply中的每个项目(或您选择调用的任何内容)字典并检查它是否在iRequest 例如:

similar = []
for x in iReply:
    if x in iRequest:
        similar.append(iReply[x])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM