Python 来自文件的字典理解

Python dictionary comprehension from file

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

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': '-.-.', ... }

我的问题是,我可以一行吗?有了理解力?

感谢您的宝贵时间和回答!

你的函数可以变成:

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)

这第二个例子具体设置了str.split

sepmaxsplit参数

不是理解,而是最短的:

dict(map(str.split, open(filename)))

生成器输入字典

dict(kv.split() for kv in open(filename))

dict理解会很乱,因为你没有state提取split,所以必须计算两次

{kv.split()[0]: kv.split()[1] for kv in open(filename)}