Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.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/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
Python 将列表列表转换为词典词典_Python_List_Dictionary_Type Conversion - Fatal编程技术网

Python 将列表列表转换为词典词典

Python 将列表列表转换为词典词典,python,list,dictionary,type-conversion,Python,List,Dictionary,Type Conversion,我有一个Python列表,其中包含键/值 [ [001, 'A', '100'], [001, 'B', '94'], [002, 'A', '87'], [002, 'B', '85'] ] 但前两列是唯一的键。我想将列表转换成一个字典,其中每个键的多个值将聚合成一个字典字典,以便于查找值 {'001': {'A':'100','B':'94'}, '002': {'A':'87','B':'85'} } 优雅的Python方法是什么?谢谢。您可以使用collections.default

我有一个Python列表,其中包含键/值

[ [001, 'A', '100'], [001, 'B', '94'], [002, 'A', '87'], [002, 'B', '85'] ]
但前两列是唯一的键。我想将列表转换成一个字典,其中每个键的多个值将聚合成一个字典字典,以便于查找值

{'001': {'A':'100','B':'94'}, '002': {'A':'87','B':'85'} }
优雅的Python方法是什么?谢谢。

您可以使用collections.defaultdict:


最好的方法可能是使用dict作为工厂的defaultdict:

from collections import defaultdict

dictofdicts = defaultdict(dict)

start = [ ['001', 'A', '100'], ['001', 'B', '94'], ['002', 'A', '87'], ['002', 'B', '85'] ]

for outerkey, innerkey, value in start:
    dictofdicts[outerkey][innerkey] = value
这为您提供了所需的解决方案:

>>> dictofdicts
defaultdict(dict,
            {'001': {'A': '100', 'B': '94'}, '002': {'A': '87', 'B': '85'}})
defaultdict可以像普通字典一样使用,但您也可以在以后将其转换为普通字典:

>>> dict(dictofdicts)
{'001': {'A': '100', 'B': '94'}, '002': {'A': '87', 'B': '85'}}

在词典理解中:

>>> l = [ ['001', 'A', '100'], ['001', 'B', '94'], ['002', 'A', '87'], ['002', 'B', '85'] ]
>>> {l[i][0]:{k:v for (k, v) in zip(l[i][1:], l[i+1][1:])} for i in range(0, len(l), 2)}
{'002': {'A': 'B', '87': '85'}, '001': {'100': '94', 'A': 'B'}}
>>> l = [ ['001', 'A', '100'], ['001', 'B', '94'], ['002', 'A', '87'], ['002', 'B', '85'] ]
>>> {l[i][0]:{k:v for (k, v) in zip(l[i][1:], l[i+1][1:])} for i in range(0, len(l), 2)}
{'002': {'A': 'B', '87': '85'}, '001': {'100': '94', 'A': 'B'}}