我是新来的,很抱歉,如果这个问题已被提出,但我找不到。我有1个列表和1个arrray看起来像这样。
['x1 y1','x1 y2','x1 y3','x1 y4','x2 b1','x2 b2','x2 b3','x2 b4']
我需要将此列表转换为带有这样的嵌套列表的字典
{x1:[y1,y2,y3,y4], x2:[b1,b2,b3,b4]}
类似的东西。
谢谢
你可以使用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']}
这是一个例子:
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的所有内容创建空列表。我们还创建并清空dict,我们将在以后添加值。然后我们运行一个for循环,声明如果一个值在其中有x1,我们将拆分该值,索引一将附加到x1。如果'x2'在值中,则索引1将附加到x2。然后,我们为字典创建添加值,其中x1或x2是键,并且与x1或x2对应的列表是值。输出就是你想要的。
另外值得注意的是,你使用的是numpy吗?或者您是Java开发人员?在Python中,您正在寻找的输出技术上是一个“嵌套列表”,其中字典是主要的数据结构。不是数组。在java中,这将是地图中的数组。我只是好奇,因为你听起来像一个Java开发人员,我觉得很有趣,因为你主要写的语言可以影响我的猜测。