繁体   English   中英

来自文件的 Python 字典理解

[英]Python dictionary comprehension from file

我正在尝试使我的 python 代码中的所有内容都能理解。 我必须将 a.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': '-.-.', ... }

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

感谢您的时间和回答!

您的 function 可以变成:

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.splitsepmaxsplit参数

不是理解,而是最短的:

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

生成器馈送到字典

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

字典理解会很乱,因为你没有 state 来提取分裂,所以你必须计算两次

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM