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
的sep
和maxsplit
参数
不是理解,而是最短的:
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)}
我正在尝试使我的 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
sep
和maxsplit
参数
不是理解,而是最短的:
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)}