如何从字典中的嵌套列表中删除无关的方括号?

问题描述

我一直在研究一个问题,该问题涉及对大量的车间订单数据进行排序,根据某些参数提取车间和用户信息。通常,这涉及通过使用for循环遍历数据集并添加新列表来创建字典,如下所示:

sshop = defaultdict(list)
for i in range(df_subset.shape[0]):
    orderid,sid,userid,time = df.iloc[i]
    sshop[sid].append(userid)
sData = dict(sshop)


#CREATES DICTIONARY OF UNIQUE SHOPS WITH USER DATA AS THE VALUE
shops = df_subset['shopid'].unique()
shops_dict = defaultdict(list)
for shop in shops: 
    shops_dict[shop].append(sData[shop])
shops_dict = dict(shops_dict)

shops_dict此时看起来像这样:

{10009: [[196962305]],10051: [[2854032,48600461]],10061: [[168750452,194819216,130633421,62464559]]}

要进入最后阶段,我不得不重复几次类似的代码行。每次执行此操作时,似乎发生的事情是字典中的值获得一组方括号。

这是我的最后一本字典:

{10159: [[[1577562540.0,1577736960.0,1577737080.0]],[[1577651880.0,1577652000.0,1577652960.0]]],10208: [[[1577651040.0,1577651580.0,1577797080.0]]]}

我不完全理解为什么会这样,从我的角度来看,这与使用defaultdict(list)然后使用dict()将其转换成字典有关。 这些额外的括号,虽然有些令人困惑,但似乎在使用某些功能访问数据时引起了一些问题。我知道总共需要两套方括号,一套将字典键中的所有值括起来,另一套在该键内,用于该键中的每组特定值。

我的第一个问题是,是否可以从这样的字典中删除一组特定的方括号? 我的第二个问题是,如果不是,是否有更好的方法可以从较旧的数据中创建数据而不使用defaultdict(list)并拥有所有这些额外的方括号?

任何帮助,不胜感激! 谢谢:)!

解决方法

在第二个循环中,使用扩展而不是附加。

for shop in shops: 
    shops_dict[shop].extend(sData[shop])
shops_dict = dict(shops_dict)