将列表列表转换为字典时出现Python键错误
我被这个简单的任务困住了。我有一个列表,我需要把它转换成字典,但到目前为止没有任何成功 我用下面的代码进行了尝试,但它给出了KeyError:0将列表列表转换为字典时出现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],
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)))
基本上是一个转置函数。它返回Python2中的列表,或Python3中的zip(*lst)
对象,可以将其转换为等效列表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)))
基本上是一个转置函数。它返回Python2中的列表,或Python3中的zip(*lst)
对象,可以将其转换为等效列表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:乐意帮忙:)