gpt4 book ai didi

Python defaultdict(dict) 中一个键有多个值

转载 作者:行者123 更新时间:2023-11-30 22:37:13 25 4
gpt4 key购买 nike

我正在尝试使用默认字典创建具有可选边权重的有向图。这是我的程序:

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,但我找不到任何地方谈论如何按照我想要的方式填充它。感谢您的帮助。

最佳答案

当您使用 defaultdict 时,您几乎总是需要使用显式循环来填充它:

myDefaultDict = collections.defaultdict(dict)
for e in myGraphLines:
myDefaultDict[e[0]][e[1]] = e[2] if len(e) == 3 else True

这种事情最初感觉应该有一些巧妙的方式来使用某种听写理解或其他东西。即使您可以使用推导式,通常也需要二次时间或者根本不需要默认字典的情况。

关于Python defaultdict(dict) 中一个键有多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43947663/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com