Python:将一个列表中的值与另一个lis中的值序列相匹配

2024-06-25 07:23:14 发布

您现在位置:Python中文网/ 问答频道 /正文

真的需要帮助。我把自己弄糊涂了,撞到了砖墙上。在

我有两张单子。在

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

和一个_列表(要对照的主列表)

^{pr2}$

我的问题是:我想把e中的数字与a中的最短数字序列相匹配。因此,新列表的形式如下:

 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\u list中。但是它会打印出所有序列的“in”,例如,jackie在b和c中都被算作in,而我希望它是最短的值,b。我现在正为下一步的工作而挣扎。任何帮助都将不胜感激。提前谢谢。在


Tags: keyin列表newfor序列数字形式
2条回答

首先对一个_列表进行排序,然后执行循环检查。在

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

在排序之后,一个短的数字串将在一个短的数字串在前面,所以在循环中你只需要找到第一个匹配。在

for name, digits in e_list:
    shortest = sorted([d for l, d in a_list if digits.startswith(d)], key=len)[0]
    print name, digits, shortest

相关问题 更多 >