Python使用数组将list转换为字典(list)

时间:2018-09-08 22:40:13

标签: python arrays python-3.x python-2.7 list

我是新来的,如果对此问题已经提出,但我找不到它,我们感到抱歉。 我有1个清单和1个Arrrray,看起来像这样。

node_modules

我需要将此列表转换为带有这样的嵌套列表的字典

['x1 y1','x1 y2','x1 y3','x1 y4','x2 b1','x2 b2','x2 b3','x2 b4']

与此类似。

谢谢

2 个答案:

答案 0 :(得分:0)

您可以使用itertools.groupby

import itertools
d = ['x1 y1','x1 y2','x1 y3','x1 y4','x2 b1','x2 b2','x2 b3','x2 b4']
new_d = [[a, list(b)] for a, b in itertools.groupby(sorted(map(str.split, d), key=lambda x:x[0]), key=lambda x:x[0])]
final_result = {a:[d for _, d in b] for a, b in new_d}

输出:

{'x1': ['y1', 'y2', 'y3', 'y4'], 'x2': ['b1', 'b2', 'b3', 'b4']}

答案 1 :(得分:0)

这里是一个例子:

list_1 = ['x1 y1','x1 y2','x1 y3','x1 y4','x2 b1','x2  b2','x2 b3','x2 b4']
x1 = []
x2 = []
dict_1 = {}

for i in list_1:
    if 'x1' in i:
         j = i.split()
         x1.append(j[1])

    if 'x2' in i:
         j = i.split()
         x2.append(j[1])

dict_1 = {'x1':  x1, 'x2': x2}

print(dict_1)

输出:

{'x1': ['y1', 'y2', 'y3', 'y4'], 'x2': ['b1', 'b2', 'b3', 'b4']}

我们为属于x1和x2的所有内容创建空列表。我们还创建并清空字典,以便以后添加值。然后,我们运行一个for循环,声明如果值中包含x1,则将拆分该值,并将索引1附加到x1。如果值中有“ x2”,则索引1将附加到x2。然后,我们以x1或x2为键,并以x1或x2为值的列表创建添加值到字典。输出就是您要寻找的。

还要注意,您是否使用numpy?还是您是Java开发人员?在Python中,您寻找的输出在技术上是一个“嵌套列表”,其中字典是主要的数据结构。不是数组。在Java中,这将是地图内的数组。我只是好奇,因为您听起来像Java开发人员,但我觉得很有趣,因为您主要使用哪种语言会影响我的猜测。