python - 在python中根据它们内部的特定键合并这两个json对象?(请查看示例)
问题描述
有没有办法根据“matchID”匹配这些 json 对象,并将它们变成一个具有合并数据的对象?我基本上希望这些制作一个表格,其中包含参与同一比赛 ID 的每个玩家的统计数据。
输入:
data_list = [
{
"kloweritotv#3560772":[
{
"kd":2,
"kills":6,
"teamPlacement":3,
"damageDone":2388,
"matchID":"12887455297423544724"
},
{
"kd":1,
"kills":4,
"teamPlacement":14,
"damageDone":1828,
"matchID":"11929202821836542057"
},
]
},
{
"Stylnox07":[
{
"kd":4.5,
"kills":9,
"teamPlacement":3,
"damageDone":2549,
"matchID":"12887455297423544724"
},
{
"kd":1.5,
"kills":3,
"teamPlacement":14,
"damageDone":1008,
"matchID":"11929202821836542057"
}
}
]
所需的输出(伪代码):
[
{
"matchid":12887455297423544724,
"kloweritotv":{
"kd":2,
"kills":6,
"teamPlacement":3,
"damageDone":2388,
"matchID":"12887455297423544724"
},
"Stylnox07":{
"kd":4.5,
"kills":9,
"teamPlacement":3,
"damageDone":2549,
"matchID":"12887455297423544724"
}
},
{
"matchid":11929202821836542057,
"kloweritotv":{
"kd":1,
"kills":4,
"teamPlacement":14,
"damageDone":1828,
"matchID":"11929202821836542057"
},
"Stylnox07":{
"kd":1.5,
"kills":3,
"teamPlacement":14,
"damageDone":1008,
"matchID":"11929202821836542057"
}
}
]
任何信息肯定会非常有帮助!蒂亚!
更新:为了更容易理解,去掉了额外的匹配。换句话说,如果用户 1 有 match_id 123 并且用户 2 也有 match_id 123 - 它们都应该与各自的数据合并到一个 match_id 123 下。
解决方案
def collect_data(key_id, match_id):
d = []
for k1 in data_list:
for k2 in k1:
if k2 != key_id: continue
for e in k1[k2]:
if e.get('matchID', None) == match_id:
e1 = e.copy()
e1.pop('matchID')
d.append(e1)
return d
dics = {}
for k1 in data_list:
for k2 in k1:
for e in k1[k2]:
m = e.get('matchID', None)
if m is None: continue
if not m in dics: dics[m] = {}
dics[m].update({k2: collect_data(k2, m)})
推荐阅读
- php - 在控制器中循环调用自己的应用程序 api 是否明智?
- python - 将 numpy 数组的第二列转换为虚数
- java - 在 android studio para mí org.gradle.execution.MultipleBuildFailures 中构建应用程序时出错
- php - 重定向回来后如何在表单中添加标题?
- asp.net-mvc - 在asp.net mvc中使用Rotativa打印页面
- javascript - 如何将javascript函数执行限制在特定窗口?
- java - 为禁用的下拉选项创建定位器并使用 selenium java 进行选择
- c++ - 视频上的体积投影
- laravel - 类时事通讯不存在(mailchimp 时事通讯):laravel
- r - 我需要什么混合模型?