Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中,基于其中的特定键合并这两个json对象?(Plz视图示例)_Python_Django_Algorithm - Fatal编程技术网

在python中,基于其中的特定键合并这两个json对象?(Plz视图示例)

在python中,基于其中的特定键合并这两个json对象?(Plz视图示例),python,django,algorithm,Python,Django,Algorithm,有没有办法根据“matchID”匹配这些json对象,并将它们合并成一个具有合并数据的对象?我基本上是想让它们组成一个表,包含每个参加相同比赛id的球员的统计数据 输入: data_list = [ { "kloweritotv#3560772":[ { "kd":2, "kills":6,

有没有办法根据“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"
            }
    }
]
所需输出(伪代码):

任何信息都会非常有用!蒂亚


更新:取出额外的火柴以便于理解。换句话说,如果用户1有match_id 123,用户2也有match_id 123,那么它们都应该与各自的数据合并在一个match_id 123下。

如何合并它们?我在字段中看到了最小值和最大值的组合…其中有
的“matchID”:“41968367861917674”
进入了所需的输出。它似乎丢失了,因此与输入不一致。@danimesjo因此您可以看到输入如何包含一个用户及其所有匹配项。基本上,每个匹配都有一个ID,其他用户也可能是其中的一部分。因此,如果它们都有相同的匹配id,那么它们应该在一个匹配id下,并且它们的统计数据应该在该匹配id下,如输出中所述。另外,我不想让match_id成为一个键,因为以后如果id都不一样,那么就很难迭代。@D.L我更新了这个问题,我想对这个例子做的是,如果match_id在两个玩家中都不存在,那么我们就不合并它。但我们现在可以忽略这个问题。我更关心第一个问题。谢谢你的帮助!有具体问题吗?你试过什么,做过什么研究吗?请看。
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)})
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)})