我有这个:
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]
答案 0 :(得分:2)
您可以使用 dictionary comprehension 和 enumerate
轻松创建您想要的结构。在我的示例中,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)