[英]Python: matching values from one list to the sequences of values in another 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_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的编号中 。 但是它会为所有序列打印出“in”,例如,对于b和c都计算jackie,而我希望它是最短的值,b。 我现在正在努力解决下一步的问题。 任何帮助,将不胜感激。 先感谢您。
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
首先排序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中的短数字字符串将首先出现,因此在循环中您只需要找到第一个匹配项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.