首页 > 解决方案 > 来自文件的 Python 字典理解

问题描述

我正在尝试使我的python代码中的所有内容都能理解。我必须将 .txt 文件数据转换为 dict。它看起来像这样:

A   .-
B   -...
C   -.-.
...

是的,这是摩尔斯电码。

我的代码如下所示:

def morse_file_to_dict(filename):
    d = {}
    for line in open(filename):
        ch, sign = line.strip().split('\t')
        d[ch] = sign
    return d

它会返回一个正常的字典,如下所示:

{'A': '.-', 'B': '-...', 'C': '-.-.', ... }

我的问题是,我可以在一行中做这个吗?有悟性

感谢您的时间和回答!

标签: pythondictionary-comprehensionfor-comprehension

解决方案


你的功能可以变成:

def morse_file_to_dict(filename):
    with open(filename) as fh:    
        return dict(l.strip().split() for l in fh)

这利用了从元组创建字典的优势。

如果有可能有两个以上的字段,您应该使用:

def morse_file_to_dict(filename):
    with open(filename) as fh:    
        return dict(l.strip().split("\t", 1) for l in fh)

这第二个例子专门设置了sepmaxsplit参数str.split


推荐阅读