【问题标题】:How to remove extraneous square brackets from a nested list inside a dictionary?如何从字典内的嵌套列表中删除无关的方括号?
【发布时间】:2020-08-24 08:05:25
【问题描述】:

我一直在研究一个问题,该问题涉及对大量商店订单数据集进行排序,根据一些参数提取商店和用户信息。大多数情况下,这涉及通过使用 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]]}

为了进入最后阶段,我不得不重复几次类似的代码行。每次我这样做时似乎发生的事情是字典中的 VALUES 获得了一组方括号。

这是我最后的字典之一:

{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) 并使用所有这些额外的方括号的情况下从旧字典中创建新字典?

非常感谢任何帮助! 谢谢:)!

【问题讨论】:

    标签: python list dictionary square-bracket


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-06
      • 2021-12-08
      • 1970-01-01
      • 2017-12-22
      • 1970-01-01
      • 2019-08-11
      • 1970-01-01
      • 2022-10-19
      相关资源
      最近更新 更多