Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.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_Keyerror - Fatal编程技术网

将列表列表转换为字典时出现Python键错误

将列表列表转换为字典时出现Python键错误,python,list,dictionary,keyerror,Python,List,Dictionary,Keyerror,我被这个简单的任务困住了。我有一个列表,我需要把它转换成字典,但到目前为止没有任何成功 我用下面的代码进行了尝试,但它给出了KeyError:0 list = [[3,0,7,4,5],[2,3,0,1,2],[6,6,7,6,6]] d = {} for x in list: i = 0 for number in x: d[i].append(number) i += 1 我需要它是这样的: {0: [3,2,6], 1: [0,3,6],

我被这个简单的任务困住了。我有一个列表,我需要把它转换成字典,但到目前为止没有任何成功

我用下面的代码进行了尝试,但它给出了KeyError:0

list = [[3,0,7,4,5],[2,3,0,1,2],[6,6,7,6,6]]

d = {}
for x in list:
    i = 0
    for number in x:
        d[i].append(number)
        i += 1
我需要它是这样的:

{0: [3,2,6], 1: [0,3,6], 2: [7,0,7], 3: [4,1,6], 4: [5,2,6]}

感谢您的帮助,提前谢谢

请不要使用内置ID

>>> lst = [[3, 0, 7, 4, 5], [2, 3, 0, 1, 2], [6, 6, 7, 6, 6]]
您第一次呼叫时会收到
KeyError

d[i].append(number)
这是因为
d
中没有键
i
。与其修改这段代码,不如让我们看看使用and,它可能更“Pythonic”:

对于一个新的Python用户来说,这可能有点让人望而生畏。让我把它分解一下

>>> zip(*lst)
[(3, 2, 6), (0, 3, 6), (7, 0, 7), (4, 1, 6), (5, 2, 6)]
这将列表分成三个部分,将三个较小的列表“拉”在一起

>>> enumerate(zip(*lst)
这将返回成对的迭代器。每对都是一个索引(从0开始)和一个输入项

>>> dict(enumerate(zip(*lst)))

该函数返回一个新的dictionary对象,并使用传入的键值对进行初始化。

请不要将内置项用作ID

>>> lst = [[3, 0, 7, 4, 5], [2, 3, 0, 1, 2], [6, 6, 7, 6, 6]]
您第一次呼叫时会收到
KeyError

d[i].append(number)
这是因为
d
中没有键
i
。与其修改这段代码,不如让我们看看使用and,它可能更“Pythonic”:

对于一个新的Python用户来说,这可能有点让人望而生畏。让我把它分解一下

>>> zip(*lst)
[(3, 2, 6), (0, 3, 6), (7, 0, 7), (4, 1, 6), (5, 2, 6)]
这将列表分成三个部分,将三个较小的列表“拉”在一起

>>> enumerate(zip(*lst)
这将返回成对的迭代器。每对都是一个索引(从0开始)和一个输入项

>>> dict(enumerate(zip(*lst)))

该函数返回一个新的dictionary对象,并使用传入的键值对进行初始化。

作为旁注,您只需使用
枚举
zip
函数即可完成此操作

lst = [[3, 0, 7, 4, 5], [2, 3, 0, 1, 2], [6, 6, 7, 6, 6]]
d = dict(enumerate(zip(*lst)))
  • zip(*lst)
    基本上是一个转置函数。它返回Python2中的列表,或Python3中的
    zip
    对象,可以将其转换为等效列表

    [(3, 2, 6), (0, 3, 6), (7, 0, 7), (4, 1, 6), (5, 2, 6)]
    
  • enumerate()
    基本上只处理元素前面的索引,并返回一个
    enumerate
    对象,该对象在转换为列表时返回一个元组列表

    [(0, (3, 2, 6)), (1, (0, 3, 6)), (2, (7, 0, 7)), (3, (4, 1, 6)), (4, (5, 2, 6))]
    
  • dict()
    获取元组列表并将它们转换为键/值对

    {0: (3, 2, 6), 1: (0, 3, 6), 2: (7, 0, 7), 3: (4, 1, 6), 4: (5, 2, 6)}
    

作为旁注,您只需使用
enumerate
zip
函数即可完成此操作

lst = [[3, 0, 7, 4, 5], [2, 3, 0, 1, 2], [6, 6, 7, 6, 6]]
d = dict(enumerate(zip(*lst)))
  • zip(*lst)
    基本上是一个转置函数。它返回Python2中的列表,或Python3中的
    zip
    对象,可以将其转换为等效列表

    [(3, 2, 6), (0, 3, 6), (7, 0, 7), (4, 1, 6), (5, 2, 6)]
    
  • enumerate()
    基本上只处理元素前面的索引,并返回一个
    enumerate
    对象,该对象在转换为列表时返回一个元组列表

    [(0, (3, 2, 6)), (1, (0, 3, 6)), (2, (7, 0, 7)), (3, (4, 1, 6)), (4, (5, 2, 6))]
    
  • dict()
    获取元组列表并将它们转换为键/值对

    {0: (3, 2, 6), 1: (0, 3, 6), 2: (7, 0, 7), 3: (4, 1, 6), 4: (5, 2, 6)}
    

避免命名数组
列表
。它可能会与函数
list()
混淆,从而避免命名数组
list
。它可能会与函数
list()
混淆。非常感谢,先生,您救了我一天!非常感谢先生,你救了我一天@user2103666:乐意帮忙:)@user2103666:乐意帮忙:)