【发布时间】:2017-05-12 23:18:56
【问题描述】:
我正在尝试使用默认字典创建具有可选边权重的有向图。这是我的程序:
import sys
import collections
myGraphLines = sys.stdin.readlines()
myGraphLines = [i.split() for i in myGraphLines]
myDefaultDict = collections.defaultdict(dict)
print(myDefaultDict)
myDefaultDict = {e[0] : {e[1] : e[2] if len(e) == 3 else True} for e in myGraphLines}
print(myDefaultDict)
当我跑步时:
SanFrancisco Houston 1000
Austin Houston 500
NYC LA 3000
LA SanFrancisco
LA Ames 300
LA Detroit 200
^D
defaultdict(<class 'dict'>, {})
{'NYC': {'LA': '3000'}, 'LA': {'Detroit': '200'}, 'SanFrancisco': {'Houston': '1000'}, 'Austin': {'Houston': '500'}}
但是如果我要创建一个有向图,我需要让'LA' 指向'SanFrancisco', 'Ames', 和'Detroit' 但它只指向底特律。
我觉得我根本没有使用 defaultdict,但我找不到任何地方谈论如何以我想要的方式填充它。感谢您的帮助。
【问题讨论】:
-
myDefaultDict = {e[0] : {e[1] : e[2] if len(e) == 3 else True} for e in myGraphLines}忽略并丢弃您之前构建的 defaultdict。 -
是的,我觉得就是这样,哈哈,我在哪里可以找到如何使用 defaultdict?
标签: python dictionary input graph collections