【问题标题】:Python - Loop Through List A and Match Words Contained in List BPython - 遍历列表 A 并匹配列表 B 中包含的单词
【发布时间】:2015-11-17 03:06:57
【问题描述】:

假设我有两个列表:

foo = ['hell', 'good', 'bad']
bar = ['hello', 'goodbye', 'goodness', 'badly', 'baddest']

我想对 foo 进行排序,看看 bar 中是否有任何单词不仅匹配而且包含 foo,得到类似:

hell = hello
good = goodbye goodness
bad = badly baddest

【问题讨论】:

  • 请注意,这些是元组,而不是列表。元组是不可变的。
  • 它们也缺少引号,除非hell, good, etc. 都是变量。

标签: python arrays loops


【解决方案1】:
one = ['hell','good','bad']
two = ['hello', 'goodbye', 'goodness', 'badly', 'baddest']

for a in one:
    print a,'=',
    for b in two:
        if a in b:
            print b,
    print

输出:

hell = hello
good = goodbye goodness
bad = badly baddest

【讨论】:

  • 史诗,正是我需要的输出!感谢您的帮助!
【解决方案2】:

非常简单的问题,有很多方法可以解决它。这是一个版本,如果没有匹配项,则不会打印出 'equals' 行:

foo = ["hell", "good", "bad", "fail"]
bar = ["hello", "goodbye", "goodness", "badly", "baddest", "nomatch"]

for f in foo:
    matches = [b for b in bar if f in b]
    if len(matches) > 0:
        print(f,"="," ".join(matches))

输出:

hell = hello
good = goodbye goodness
bad = badly baddest

请注意,它不会输出“失败”。如果您希望它打印“失败”一词,请删除if 语句。代码甚至可以减少到一行,尽管我认为这是一个非常不可读的单行:

[print(f,"="," ".join(b for b in bar if f in b)) for f in foo]

【讨论】:

  • 谢谢,虽然列表理解中的生成器并不是最易读的东西;)
猜你喜欢
  • 2020-02-02
  • 2013-05-15
  • 2018-06-11
  • 1970-01-01
  • 2017-04-28
  • 2020-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多