我有一个程序,每行读取两个(或三个)空格分隔的标记、2 个字符串和一个可选的数字
我的程序:
import sys
d = sys.stdin.readlines()
d = [i.split() for i in d]
print(*d)
运行程序:
python3 program12.py
Austin Houston 300
SanFrancisco Albany 1000
NewYorkCity SanDiego
['Austin', 'Houston', '300'] ['SanFrancisco', 'Albany', '1000'] ['NewYorkCity', 'SanDiego']
但现在我需要将这些项目添加到字典中,这让我感到困惑: 对于示例输入,dict 需要如下所示:
{'Austin': {'Houston': 300}, 'SanFrancisco': {'Albany': 1000}, 'NewYorkCity': { 'SanDiego': True }}
Dicts 的工作方式仍然让我感到困惑,更不用说用看起来像嵌套的 dict 来填充一个了。感谢您的帮助!
最佳答案
更新
一行更好的解决方案。
d = {e[0] : {e[1] : e[2] if len(e) == 3 else True} for e in d}
更新
我忽略了你的最后一个元素的长度只有两个,所以如果你可以像这样构建列表 [['Austin', 'Houston', '300'],['SanFrancisco', 'Albany', '1000'],['NewYorkCity', 'SanDiego', True]]
,那么下面的解决方案就可以了。
一线解决方案。
d = {e[0] : {e[1] : e[2]} for e in d}
关于Python 列表变成字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43860718/