【问题标题】:Python: "Key for Key" Understanding [duplicate]Python:“Key for Key”理解[重复]
【发布时间】:2017-08-29 20:08:26
【问题描述】:

我只是想了解以下脚本中的“keys =”行代码。该脚本被拉入下面链接的答案中。我只想评论那部分,但我没有足够的评论点。

Search Multiple Strings (from File) in a file and print the line

我很难找到关于什么是“key for key”的文档。根据我的发现,它是字典的一部分,但对于理解该部分的任何帮助将不胜感激。谢谢!

keyfile = "keys.txt"
testfile = "test.txt"

keys = [key for key in (line.strip() for line in open(keyfile)) if key]

with open(testfile) as f:
for line in f:
    for key in keys:
        if key in line:
            print(line, end='')
            break

【问题讨论】:

    标签: python python-2.7


    【解决方案1】:

    key for key 仅与 x for x 一样,因此作为变量的 key 将具有 in 关键字后面的元素的值。整行表示:所有元素(文件中的行)的列表,其中元素不为空。

    【讨论】:

      【解决方案2】:
      keys = [key for key in (line.strip() for line in open(keyfile)) if key]
      

      被称为列表推导(它嵌套了一个生成器推导)

      内层逐行读取文件,并删除空格和换行符。

      外层在内层上迭代,只有当它不为空时才发出值。

      总而言之,它创建了一个文件的非空行列表,非常有效,因为内部生成器理解不会创建实际列表,它的值在迭代时被评估。

      【讨论】:

        猜你喜欢
        • 2015-07-08
        • 1970-01-01
        • 1970-01-01
        • 2010-12-23
        • 2019-06-20
        • 2020-10-19
        • 2022-12-05
        • 2018-12-01
        • 2011-09-19
        相关资源
        最近更新 更多