Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将嵌套列表(python)分组到字典中?_Python_List_Dictionary_Grouping - Fatal编程技术网

如何将嵌套列表(python)分组到字典中?

如何将嵌套列表(python)分组到字典中?,python,list,dictionary,grouping,Python,List,Dictionary,Grouping,我有一个Python中的列表列表,我想将它们压缩到一个更加连贯有序的字典中 map_ = {} # Note the trailing instead of leading underscore here for sub_list in big_list: dct = map_ for item in sub_list: # Retrieve existing sub dict, or create a new one dct = dct.se

我有一个Python中的列表列表,我想将它们压缩到一个更加连贯有序的字典中

map_ = {}  # Note the trailing instead of leading underscore here

for sub_list in big_list:
    dct = map_
    for item in sub_list:
        # Retrieve existing sub dict, or create a new one
        dct = dct.setdefault(item, {})

print(map_)
数据的格式如下:

[
 ['1_1', '2_1', '3_1', '4_1'],
 ['1_1', '2_1', '3_2', '4_1'],
 ['1_1', '2_2', '3_1', '4_1'],
 ['1_1', '2_2', '3_1', '4_2'],
 ['1_1', '2_2', '3_1', '4_3'],
 ['1_1', '2_2', '3_2', '4_1', '5_1'],
 ['1_1', '2_2', '3_2', '4_2', '5_1'],    
 ['1_1', '2_2', '3_2', '4_2', '5_2'],
 and so on...
]
最终,我想要得到的是某种字典结构,通过遍历列表,在第一、第二、第三等级别根据相同的项目进行分类

我一直在玩
groupby
,以尝试以下代码:

_map = OrderedDict()
for key, group in groupby(big_list, lambda x: x[0]):  
    _map[key] = [l[1:] for l in group]
这适用于第一个级别,但我一直在研究如何在结构中递归,以便在逐步深入的级别上进行相同类型的分组

任何想法都将不胜感激

编辑:从反对票来看,我想这不是一个好问题?我认为从我的描述中可以清楚地看到预期的输出,但明确地说,我在寻找一棵与Delgan的代码生成的树非常相似的树:

{'1_1': {'2_1': {'3_1': {'4_1': {}}, '3_2': {'4_1': {}}},
         '2_2': {'3_1': {'4_1': {}, '4_2': {}, '4_3': {}},
                 '3_2': {'4_1': {'5_1': {}},
                         '4_2': {'5_1': {},
                                 '5_2': {}}
                        }
                }
        }
}
你真的不需要

这可能要简单得多:只需在遍历数据的同时迭代地填充字典

你也可以使用方便。这样可以避免检查嵌套字典中是否已经存在密钥

map_ = {}  # Note the trailing instead of leading underscore here

for sub_list in big_list:
    dct = map_
    for item in sub_list:
        # Retrieve existing sub dict, or create a new one
        dct = dct.setdefault(item, {})

print(map_)

这实际上是在创造一个新的环境。叶元素是空字典,可以稍后填充。

您没有提供预期的输出,因此很难说……您根本不清楚自己的意思。你在数据中看到的结构并不清晰,除非你解释它或给出输入和输出的示例。感觉你拥有的数据最好以树状结构进行分类/分割。你的树根将是“1_1”。它将有两个孩子:“2_1”和“2_2”等等。对于每个新列表,您将在相应的分支下创建一个节点。这样,您的数据将按层次分类。@StevenRumbalski我不理解您的说法。此代码根据输入子列表创建任意深度的图形。输出就像
{'1_1':{'2_2':{'3_1':{'4_3':{}…}
。很公平。我收回我的反对意见。