python - 两个列表,如果找到一个共同的匹配打印另一个列表元素

标签 python bash compare match

<分区>

我有两个文本文件,格式为.

File 1  
Column A    Column B      

File 2  
Column B    Column C  

在文件 2 中,B 列只是文件 1 中数据的一个子集。

我想搜索文件 1,如果找到文件 2 中 B 列数据点的匹配项,则打印 A 列值。

任何人都可以建议如何以简单的方式做到这一点?最好是 Python 或 Bash。

非常感谢。

一个例子

File 1  
Bruce Dog  
Frank Cat  
Adam Fish  
Alex Horse  

File 2  
Dog Blue  
Fish Green  

将打印:

Bruce  
Adam

最佳答案

这可以通过使用字典轻松实现

  1. 从第二个文件中创建一个元素字典。将每一行拆分为键:值对。
  2. 对于第一个文件中的每一行,将其再次拆分为 Key: value 并在字典中搜索该值
  3. 如果找到,打印您正在迭代的第一个文件的值

实现示例

from itertools import imap
file2 = dict(imap(str.split, open("file2")))
with open("file1") as fin:
    for key, value in imap(str.split, fin):
        if value in file2:
            print key

注意事项

如果您担心由于文件句柄未明确关闭而导致的资源泄漏,请将第一个语句包含在 with 子句中

with open("file2") as fin:
    file2 = dict(imap(str.split, fin))

关于python - 两个列表,如果找到一个共同的匹配打印另一个列表元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20707196/

相关文章:

java - Android Eclipse Java 将数组内容与字符串进行比较。不工作?

javascript - 如何将 SQLite 本地数据库连接到 HTML 前端?

python - 对 Python 中 Pandas 的多列 groupby 操作的含义感到困惑

java - 无法在 mesos 上运行测试框架

linux - "$PWD":/path/to/directory"的含义

bash - 如何在文件中固定数量的字符后插入换行符

python - 检查用户的 IP 地址是否在 IP 范围内

python - 在给定字典中的值的情况下创建键列表

linux - 使用AWK删除与html标签匹配的字符(不是正则表达式)

c# - "<"运算符(operator)错误