我正在使用python3和我有一个数据集。它包含以下数据。我试图从这个数据列表中得到期望的值。我尝试了很多方法,但无法找出如何做到这一点。
slots_data = [
{
"id":551,
"user_id":1,
"time":"199322002",
"expire":"199322002"
},
{
"id":552,
"user_id":1,
"time":"199322002",
"expire":"199322002"
},
{
"id":525,
"user_id":3,
"time":"199322002",
"expire":"199322002"
},
{
"id":524,
"user_id":3,
"time":"199322002",
"expire":"199322002"
},
{
"id":553,
"user_id":1,
"time":"199322002",
"expire":"199322002"
},
{
"id":550,
"user_id":2,
"time":"199322002",
"expire":"199322002"
}
]
# Desired output
# [
# {"user_id":1,"slots_ids":[551,552,553]}
# {"user_id":2,"slots_ids":[550]}
# {"user_id":3,"slots_ids":[524,525]}
# ]
我已经尝试了以下方法,显然这是不正确的。我无法找出这个问题的解决方案:
final_list = []
for item in slots_data:
obj = obj.dict()
obj = {
"user_id":item["user_id"],
"slot_ids":item["id"]
}
final_list.append(obj)
print(set(final_list))
7条答案
按热度按时间bq9c1y661#
这里添加的另一个答案有一个很好的解决方案,但这里没有使用
pandas
:ryhaxcpt2#
这里有很多好答案。
如果我这样做,我会基于
setdefault
和/或collections.defaultdict
的答案,可以用类似的方式使用,我认为defaultdict
版本是非常可读的,但如果你还没有导入集合,你可以不使用它。根据您的数据:
您可以通过以下方式将其重塑为所需的输出:
这将为您提供:
qni6mghb3#
我建议尝试使用
pandas
将用户ID组合在一起,并将其转换回字典t1rydlwq4#
只是简单的循环方式
2guxujil5#
你可以使用以下代码来完成它。纯Python。没有任何依赖项。
xtupzzrd6#
这可以在一个使用列表理解:
相同代码的更详细、格式更好的版本:
说明:
1.用列表解析获取所有用户ID
1.通过创建一个集合来获取唯一的用户ID
1.使用列表解析创建字典的最终列表。
1.每个字段
id
本身就是一个具有列表解析的列表,我们获取槽的id,并且只有当用户id匹配时才将其添加到列表中vlf7wbxs7#
使用Pandas你可以很容易地达到这个效果。首先安装Pandas如果你没有如下
管道安装支架
输出: