Я работал над проблемой, которая включает в себя сортировку большого набора данных о заказах в магазине, извлечение информации о магазине и пользователе на основе некоторых параметров. В основном это включало создание словарей путем итерации набора данных с помощью цикла 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)
shop_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) и всех этих дополнительных квадратных скобок?
Любая помощь высоко ценится! Спасибо :)!