[英]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.split
的sep
和maxsplit
参数
不是理解,而是最短的:
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.