【发布时间】:2020-12-07 20:21:10
【问题描述】:
我有两本内容相关的字典。一个是由以 'shopid' 作为 key 并以 'userid' 的数据集形成的> 作为 值。另一个字典由相同的数据集组成,但将 'userid' 作为 key 和 'datetime ' 此用户购买的商品的价值。
我希望能够做的是创建一个 for 循环(或类似的循环),对于每个“shopid”键,都获取“userid”值并将这些“userid”值转换为包含“第二个字典中的日期时间值。这是针对大型数据集的。
我了解字典对您可以对它们执行的操作有一些限制,因此很高兴知道这是否可行,或者是否有更好的方法来获得类似的结果?
作为输入/输出理想的例子:
dict1 = {'shopid1':['userid1','userid2','userid3']}
dict2 = {
'userid1':['2020-08-17 09:00','2020-08-18 08:30'],
'userid2':['2020-08-16 11:00','2020-08-15 13:30'],
'userid3':['2020-08-18 09:30','2020-08-18 10:00','2020-08-18 11:30']
}
combined_dict = {
'shopid1':{
'userid1':['2020-08-17 09:00','2020-08-18 08:30'],
'userid2':['2020-08-16 11:00','2020-08-15 13:30'],
'userid3':['2020-08-18 09:30','2020-08-18 10:00','2020-08-18 11:30']
}
}
编辑:
我要合并的实际字典如下所示:
shopid = {10159: [[[62775725, 214988798, 214988798, 214988798, 62775725,
62775725]]]
userid = {166840413: [[datetime.datetime(2019, 12, 29, 15, 48),
datetime.datetime(2019, 12, 29, 15, 48), datetime.datetime(2019, 12, 29,
15, 48)]]
我相信多余的方括号是使用默认字典几次创建新的缩短字典的产物,这些字典删除了不符合问题要求的值。
【问题讨论】:
-
这个练习的高层次目标是什么?大局是什么?你用过
pandas.DataFrame吗?您可能会发现它很有用。 -
字典的限制是它们的键必须是不可变的/可散列的。所以作为字符串、数字、字符串元组等的键是可以的。不允许将列表、迭代器或其他字典作为键。所以在这种情况下,所有的键都是字符串!一切顺利,只需遍历这两个字典即可构建您想要的字典。
-
@Robert 总体目标是找出哪些用户在一小时内在一家商店进行了超过 3 次购买(取自 Kaggle 的刷单问题)。我最初使用数据框来访问 csv 中的数据,但在剔除不符合要求的商店或用户时,我认为制作字典是一个不错的选择 - 可能我错了!
-
@bbbbbb 对,这是有道理的。我刚刚编辑了我的问题以添加我的两个字典的实际外观 - 多个方括号会是我的问题的原因吗?我在下面使用了 Colin 的答案,它为每个 shopid 返回了一个空字典。
标签: python pandas list dictionary append