Python:将一个列表中的值与另一个列表中的值序列进行匹配

时间:2015-11-20 14:42:19

标签: python list

我原来的问题在这里被问到并回答:Python: matching values from one list to the sequence of values in another list

我有两个清单。

   e_list = [('edward', '1.2.3.4.'), ('jane','1.2.3.4.'), ('jackie', '2.3.4.10.')...]

和a_list(要检查的主要列表)

   a_list = [('a', '1.2.3.'), ('b', '2.3.'), ('c', '2.3.4.')...]

我想修改输出到我原来的问题。我不确定如何更改代码片段以解决相同的问题但输出所有可能性?

e.g。

 new_list = [ ('edward', '1.2.3.4', '1.2.3'), ('jane', '1.2.3.4.', '1.2.3'), ('jackie', '2.3.4.10.', '2.3.'), ('jackie', '2.3.4.10.', '2.3.4')] 

2 个答案:

答案 0 :(得分:0)

您需要遍历a_list中的所有内容,然后处理在e_list中添加值的额外情况。最终看起来像这样:

results = []
for name, x in e_list:
    this_name = [name, x]
    for a, b in a_list:
        if x.startswith(b):
            this_name.append(b)
    results.append(tuple(this_name))

print(results)

在此处查看此操作:http://ideone.com/y8uAvC

答案 1 :(得分:0)

如果您愿意,可以使用列表理解:

- AWSIoTLogging
- AWSIoTConfigAccess
- AWSIoTRuleActions
- AWSIoTConfigReadOnlyAccess
- AWSIoTDataAccess
- AWSIoTFullAccess

但是由于它变得复杂,嵌套循环可能更清晰。您可以使用res = [(name, digits, match) for name, digits in e_list for _, match in a_list if digits.startswith(match)] print res 获取最终列表:

yield