看似简单但难以捉摸,想要使用只有一个Python语句从空格分隔的[key,value]对的输入构建一个dict.这是我到目前为止:
d={}
n = 3
d = [ map(str,raw_input().split()) for x in range(n)]
print d
Run Code Online (Sandbox Code Playgroud)
输入:
A1023 CRT
A1029 Regulator
A1030 Therm
Run Code Online (Sandbox Code Playgroud)
期望的输出:
{'A1023': 'CRT', 'A1029': 'Regulator', 'A1030': 'Therm'}
Run Code Online (Sandbox Code Playgroud)
这就是我们最终使用的内容:
n = 3
d = dict(raw_input().split() for _ in range(n))
print d
Run Code Online (Sandbox Code Playgroud)
输入:
A1023 CRT
A1029 Regulator
A1030 Therm
Run Code Online (Sandbox Code Playgroud)
输出:
{'A1023': 'CRT', 'A1029': 'Regulator', 'A1030': 'Therm'}
Run Code Online (Sandbox Code Playgroud)
使用str.splitlines()和str.split():
strs="""A1023 CRT
A1029 Regulator
A1030 Therm"""
dict(x.split() for x in strs.splitlines())
Run Code Online (Sandbox Code Playgroud)
结果:
{'A1023': 'CRT', 'A1029': 'Regulator', 'A1030': 'Therm'}
Run Code Online (Sandbox Code Playgroud)
更多信息:
str.splitlines([keepends]) -> 字符串列表
返回 S 中的行列表,在行边界处断开。除非给出 keepends 并且为真,否则换行符不会包含在结果列表中。
str.split([sep [,maxsplit]]) -> 字符串列表
返回字符串 S 中的单词列表,使用 sep 作为分隔符字符串。如果给出 maxsplit,则最多完成 maxsplit 分割。如果未指定 sep 或为 None,则任何空白字符串都是分隔符,并且将从结果中删除空字符串。