Python列表成Dict?

时间:2017-05-09 03:45:41

标签: python dictionary input

我有一个程序,读取两个(或三个)空格分隔的标记,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中,这是我感到困惑的地方:     对于示例输入,dict需要如下所示:

{'Austin': {'Houston': 300}, 'SanFrancisco':  {'Albany': 1000}, 'NewYorkCity': { 'SanDiego': True }}
对于我们如何工作,Dicts仍然让我感到困惑,更不用说用一个看似嵌套的词典来填补一个。任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:3)

更新

一线更好的解决方案。

[['Austin', 'Houston', '300'],['SanFrancisco', 'Albany', '1000'],['NewYorkCity', 'SanDiego', True]]

更新

我忽略了你的最后一个元素的长度只有两个,所以如果你可以像d = {e[0] : {e[1] : e[2]} for e in d}那样构建列表,那么下面的解决方案就可以了。

一线解决方案。

currentTime

答案 1 :(得分:2)

d = { e[0]: {e[1]: (e[2] if e[2:] else True)} for e in d}

在最后添加这一行。