添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
自信的凳子  ·  python滤波器 ...·  6 月前    · 
骑白马的咖啡  ·  JavaScript ...·  1 年前    · 
安静的水桶  ·  pdf.js viewer.js ...·  1 年前    · 
开朗的滑板  ·  php,js ...·  1 年前    · 

在两个Python列表中查找相似的字符串

1 人不认可

我有一个词的列表,我想在另一个列表中寻找。我想在我的main_list中找到match_words并在一个新的列表中返回它们的值。

match_words = ['reports', 'users']
main_list = ['reports_data', 'users_accounts', 'backups', 'logs']

返回的正确值应该是

returned_list = ['reports_data', 'users_accounts']

I've tried using

returned_list = filter(lambda x:x in main_list,match_words)

我猜想它们不匹配是因为它们不是完全匹配的关键词?

1 个评论
也许你可以用 difflib
python
Jayson H
Jayson H
发布于 2020-03-19
2 个回答
Lesiak
Lesiak
发布于 2020-03-19
已采纳
0 人赞同

目前还不清楚你的相似性衡量标准是什么,但是,假设你只需要一个匹配的前缀,你可以使用下面的列表理解力

returned_list = [word for pre in match_words for word in main_list if word.startswith(pre)]

Edit:

如果你需要检查一个字符串是否是另一个字符串的一部分,你可以使用in操作符

returned_list = [word for part in match_words for word in main_list if part in word]
    
如果match_word是 "reports",而main_list的单词是 "data_reports",这是否能起作用。我需要它检查主列表中的整个字符串,而不是仅仅检查开头。
Ilya Stokolos
Ilya Stokolos
发布于 2020-03-19
0 人赞同

有点啰嗦,但它能完成工作

match_words = ['reports', 'users']
main_list = ['reports_data', 'users_accounts', 'backups', 'logs']
returned_list = []