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

时间:2015-11-17 10:16:14

标签: python 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_list 中数字中的数字与 a_list 中数字的最短序列进行匹配。因此 new_list 形成如下:

 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.')...]

我目前所做的事情(我知道的并不多)是:

for e in e_list:
    e_key = e[1]
    for a in a_list:
        a_key = a[1]
        if a_key in e_key:
            print a_key, "in"

这样做是检查 a_list 的编号是否在 e_list 的编号中。但随后它会在"中打印出来。对所有序列,例如对于b和c,jackie都被计为,而我希望它是最短的值,b。我现在正在努力解决下一步的问题。任何帮助,将不胜感激。谢谢你提前。

2 个答案:

答案 0 :(得分:1)

 adapter = new MyBaseAdapterActivity(context, list);
 lstName.setAdapter(adapter);

答案 1 :(得分:0)

首先排序a_list,然后执行循环检查。

a_list.sort(key=lambda x: x[1])
for e in e_list:
    e_key = e[1]
    for a in a_list:
        a_key = a[1]
        if a_key.startswith(e_key):
            print a_key, "in"
            break

排序后,a_list中的短数字字符串将首先出现,所以在循环中你只需要找到第一个匹配。