访问字典组件中的列表元素

2024-04-16 18:31:47 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个字典(MxN=4x3矩阵),其中包含整数键和列表值,如下所示:

d={1:[10,11,12], 2:[13,14,15], 3:[16,17,18], 4:[19,20,21]}

我正在尝试获取一个如下所示的列表:

new_list_1 = [10,13,16,19]

在本例中,我尝试获取字典中每个值(列表)的第一个元素,并将其放入一个新列表中。但是,我也希望对其他索引执行此操作,例如:

new_list_2 = [11,14,17,20]

new_list_3 = [12,15,18,21]

一旦我有了这些列表,理想情况下我会将它们放在一个新的维度NxM字典中:

d_new = {0:new_list_1, 1:new_list_2, 2:new_list_3}

谢谢


Tags: 元素列表new字典情况矩阵整数list
3条回答

将dict值转换为列表列表(2d矩阵),然后使用该矩阵的转置,然后根据需要生成结果

res =  {i: list(k) for i ,k in enumerate(list(zip(*d.values())))} 
print(res)
# {0: [10, 13, 16, 19], 1: [11, 14, 17, 20], 2: [12, 15, 18, 21]}                                                                                                                               

使用numpy,您可以:

import numpy as np
d = {
    1: [10, 11, 12],
    2: [13, 14, 15],
    3: [16, 17, 18],
    4: [19, 20, 21],
}
a = np.array(list(d.values()))
a = a.T

输出:

array([[10, 13, 16, 19],
       [11, 14, 17, 20],
       [12, 15, 18, 21]])

回到格言:

d = {n+1: l for n, l in enumerate(a.tolist())}

输出:

{1: [10, 13, 16, 19], 2: [11, 14, 17, 20], 3: [12, 15, 18, 21]}

你可以用

new_list_1 = [v[0] for v in d.values()]
new_list_2 = [v[1] for v in d.values()]
new_list_3 = [v[2] for v in d.values()]

然后使用

d_new = {0:new_list_1, 1:new_list_2, 2:new_list_3}

d_new的值:

{0: [10, 13, 16, 19], 1: [11, 14, 17, 20], 2: [12, 15, 18, 21]}

或者:

d_new = {i:[v[i] for v in d.values()] for i in range(0,3)}

我也会这么做

相关问题 更多 >