我需要从列表列表中制作字典

时间:2021-06-29 18:37:29

标签: python

我有这个:

A = [[0, 3, 6, 11], [0, 5, 7, 11], [0, 1, 2, 4, 8, 9, 10, 11]]

我想像这样从 A 制作字典:

dic_A = { 0: [0, 3, 6, 11], 1: [0, 5, 7, 11], 2: [0, 1, 2, 4, 8, 9, 10, 11]}

我尝试了不同的方法,我只能使用范围内的 for 来解决问题我认为这可以以某种方式减少到一行,但我找不到方法

我试过了:

    dic_A = {}
    for i in range(3):
         dic_A[i] = A[i]
        
          

5 个答案:

答案 0 :(得分:2)

您可以使用 dictionary comprehensionenumerate 轻松创建您想要的结构。在我的示例中,i(整数)将是子 list 的索引,而 d(数据)将是实际子 list。然而,似乎没有太多理由这样做,因为唯一的语法差异是从 A[0]B.0。如果您决定在远程循环中使用 B 中的键,您实际上将不得不跳过一些圈子来定位 A 中的键,而不会出现可能的错误。在循环中使用它的语法将与 B 相同,因为您必须键入 B[i](例如:len(A))。您还将丢失简单的检查,例如:range 以确定索引是否可用或根据已知的可用内容创建 list。简而言之:这样做可能会给自己带来未来的问题。无论你想用这个来完成什么,都可能有更好的方法。如果我们要实施奥卡姆剃刀,“更好的方法”很可能只是使用 A = [[0, 3, 6, 11], [0, 5, 7, 11], [0, 1, 2, 4, 8, 9, 10, 11]] B = {i:d for i, d in enumerate(A)} print(B) #{0: [0, 3, 6, 11], 1: [0, 5, 7, 11], 2: [0, 1, 2, 4, 8, 9, 10, 11]}

CustID  CustName     OrderNumber ...
001     John Smith   1234
002     kelly smith  1235
002     kelly smith  4512

答案 1 :(得分:1)

这应该有效:

dic_A = {index: array for index, array in enumerate(A)}

答案 2 :(得分:0)

A = [[0, 3, 6, 11], [0, 5, 7, 11], [0, 1, 2, 4, 8, 9, 10, 11]]

# Create a dictionary
dic = {}

# loop through A and assign Key, value pairs based on list index
for index, value in enumerate(A):
    dic[index] = value

答案 3 :(得分:0)

你可以这样理解:

A = [[0, 3, 6, 11], [0, 5, 7, 11], [0, 1, 2, 4, 8, 9, 10, 11]]
{x: y for x, y in enumerate(A)}

输出:

{0: [0, 3, 6, 11], 1: [0, 5, 7, 11], 2: [0, 1, 2, 4, 8, 9, 10, 11]}

答案 4 :(得分:0)

您可以使用 enumerate() 内置函数

A = [[0, 3, 6, 11], [0, 5, 7, 11], [0, 1, 2, 4, 8, 9, 10, 11]]

d = dict()
for i,el in enumerate(A):
    d[i] = el

print(d)