【问题标题】:Reverse a defaultdict(dict)反转 defaultdict(dict)
【发布时间】:2017-05-14 19:38:48
【问题描述】:

如果我有一个 defaultdict(dict):

defaultdict("dict"), {'NYC': {'LA': '3000'}, 'SanFrancisco': {'Houston': '1000'}, 'LA': {'Detroit': '200', 'Ames': '300', 'SanFrancisco': True}, 'Austin': {'Houston': '500'}})

如何“反转弧线”?还是本网站的第 3 步? http://www.geeksforgeeks.org/connectivity-in-a-directed-graph/

示例输出:

# edited for more clarity
defaultdict(<class 'dict'>,
            {'Ames': {'LA': '300'},
             'Detroit': {'LA': '200'},
             'Houston': {'Austin': '500', 'SanFrancisco': '1000'},
             'LA': {'NYC': '3000'},
             'SanFrancisco': {'LA': True}})

转置图形:https://en.wikipedia.org/wiki/Transpose_graph

附:我想将我的反转图保留为 defaultdict(dict)。谢谢!

【问题讨论】:

  • 你尝试过什么代码,你卡在哪里了?此外,您应该更改标题,因为您不是要反转 defaultdict,而是要反转使用 defaultdict 的图形。最后,我们是否假设该 defaultdict 的格式是每个键是节点的文本(称为从节点),每个值是一个字典,其中每个键是从 from 可直接访问的节点的文本-node,值是该边的成本?
  • 有定向字符串。 1个字符串指向另一个,可选后跟数字边权重,如果没有数字,边权重默认为True
  • 感谢您的澄清。剩下的唯一一件事就是让您展示您尝试过的内容并解释您遇到的问题。

标签: python reverse graph-theory directed-graph defaultdict


【解决方案1】:

嵌套的 defaultdict 是一个二维数据结构(对于每个源城市,可能有多个目的地)。因此,使用嵌套的 for 循环来遍历数据并重新插入到新的 defaultdict 中并反转维度(交换源和目标)是有意义的:

>>> from collections import defaultdict

>>> start = defaultdict(dict, {'NYC': {'LA': '3000'}, 'SanFrancisco': {'Houston': '1000'}, 'LA': {'Detroit': '200', 'Ames': '300', 'SanFrancisco': True}, 'Austin': {'Houston': '500'}})

>>> goal = defaultdict(dict)
>>> for source, dests in start.items():
        for dest, distance in dests.items():
            goal[dest][source] = distance

>>> goal
defaultdict(<class 'dict'>, {'LA': {'NYC': '3000'}, 'Houston': {'SanFrancisco': '1000', 'Austin': '500'}, 'Detroit': {'LA': '200'}, 'Ames': {'LA': '300'}, 'SanFrancisco': {'LA': True}})

【讨论】:

    猜你喜欢
    • 2013-12-24
    • 1970-01-01
    • 1970-01-01
    • 2012-11-08
    • 2018-11-16
    • 2014-12-17
    • 1970-01-01
    • 2021-12-01
    • 2021-07-11
    相关资源
    最近更新 更多