python将带有子列表的列表转换为字典

问题描述

你好,我是python的新手。

我正在使用python中的列表,我想将{{1}中名为 graph list转换为dictionnary graph }。

我有PYTHON

list

我希望列表成为这样的字典:

graph = [
    ['01 Mai',[
        ['Musset',5],['Place 11 Decembre 1960',4],["Sidi M'hamed",3],['El Hamma (haut)',6]
      ]
    ],['Musset',[
        ['Place 11 Decembre 1960',6],["Jardin d'Essai (haut)",10]
      ],]
]

解决方法

一个简单的字典理解就可以了:

1875/1875 [==============================] - 4s 2ms/step - loss: 0.6965 - accuracy: 0.8142 - val_loss: 0.3279 - val_accuracy: 0.9128
313/313 - 0s - loss: 0.3279 - accuracy: 0.9128
4.709409705000326

Playground

,

您可以使用递归来处理未知深度的输入:

graph = [['01 Mai',[['Musset',5],['Place 11 Decembre 1960',4],["Sidi M'hamed",3],['El Hamma (haut)',6]]],['Musset',[['Place 11 Decembre 1960',6],["Jardin d'Essai (haut)",10]]]]
def to_dict(d):
  return {a:b if not isinstance(b,list) else to_dict(b) for a,b in d}

print(to_dict(graph))

输出:

{'01 Mai': {'Musset': 5,'Place 11 Decembre 1960': 4,"Sidi M'hamed": 3,'El Hamma (haut)': 6},'Musset': {'Place 11 Decembre 1960': 4,'El Hamma (haut)': 6,"Jardin d'Essai (haut)": 10}}
,

一个简单的解决方案是:

for item in graph:
    d[item[0]] = {record[0]: record[1] for record in item[1]}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...