我原来的问题在这里被问到并回答: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')]
答案 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