我是新来的,如果对此问题已经提出,但我找不到它,我们感到抱歉。 我有1个清单和1个Arrrray,看起来像这样。
node_modules
我需要将此列表转换为带有这样的嵌套列表的字典
['x1 y1','x1 y2','x1 y3','x1 y4','x2 b1','x2 b2','x2 b3','x2 b4']
与此类似。
谢谢
答案 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开发人员,但我觉得很有趣,因为您主要使用哪种语言会影响我的猜测。