【问题标题】:Converting a 2D array (adjacency list) into a dictionary python将二维数组(邻接表)转换为字典 python
【发布时间】:2019-02-27 05:43:40
【问题描述】:

我的邻接列表是:

Graph = [[3, 4], [3], [3, 4], [0, 1, 2], [0, 2]]

我想得到这个输出:

adjacency_dict = {0: [3, 4], 
                  1: [3], 
                  2: [3, 4], 
                  3: [0, 1, 2], 
                  4: [0, 2]}

我之前尝试过的所有解决方案都得到了“TypeError: unhashable type: 'list'”,我从概念上理解为什么会这样,但我无法将这种理解转化为实际编写解决方案。我对 Python 比较陌生,所以任何建议都会有所帮助。

【问题讨论】:

  • adjacency_dict = {i: l for (i,l) in enumerate(Graph)} 虽然我不明白这样做的意义......

标签: python arrays dictionary 2d adjacency-list


【解决方案1】:

试试这个:

adjacency_dict = {i: j for i,j in enumerate(Graph)}

adjacency_dict = {i:Graph[i] for i in range(len(Graph))}

【讨论】:

    【解决方案2】:

    从技术上讲,您尝试使用字典实现的结果将与列表相同。

    例如试试这个

    >>>Graph[0][1]
    //will print 4
    >>>Graph[1][0]
    //will print 3
    

    但是,如果您真的想将列表转换为带有您描述的键的字典,可以使用以下代码完成:

    adjacency_dict = {}
    for idx, val in enumerate(Graph):
      adjacency_dict[idx] = val
    

    【讨论】:

      【解决方案3】:

      虽然 dict 理解会产生相同的结果,但我觉得这更简洁:

      adjacency_dict = dict(enumerate(Graph))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-24
        • 2015-12-22
        • 2019-09-17
        • 2019-01-23
        • 1970-01-01
        • 2016-04-22
        • 1970-01-01
        相关资源
        最近更新 更多