首页 > 解决方案 > 如何根据密钥对类型 python 对我的 json 数据进行排序

问题描述

问题:

我只是想找到一种方法来按 ['logonTime'] 对我的 json 数据进行排序。

这是 json 的简化形式:

{'results': 
          [{'userName': 'PDD1\\Samantha', 
            'logonTime': 1615222801000.0, 
             'deviceId': 892}] 
}

我希望所有条目都按 ['logonTime'] 排序,但我还没有找到正确的方法。我认为这对我来说很难的原因是因为似乎有很多不同的方法可以做到这一点。

我在此处尝试了此链接中的方法Sort a JSON using Pythoncannot assign to lambda但是当我尝试自己编写代码时出现错误消息。

这是通常的代码:

#client file that handles the api get request. py
def get_logged_on_users(self):
        resp = self.api_get_request(self.NINJA_API_GET_LOGGED_ON_USERS)
        if not resp.status_code == self.STATUS_OK:
            return False
        return resp.json()


#main file.py
napi = ninjarmm_api.client(ninjaapi, ninjasak, iseu=False, debug=False)
napialert = napi.get_disks()
napilousers = napi.get_logged_on_users()
napidevices = napi.get_devices()
print(napilousers)

这是我尝试从之前看到的链接中对数据进行排序的糟糕尝试:

sorted_napilousers = dict(napilousers)
sorted_napilousers['results'] = sorted(napilousers)['logonTime'], key=lambda x : x['logonTime'], reverse=True)
print(sorted_napilousers)

#this results in "cannot assign to lambda" when ran

我可以尝试任何想法或建议吗?我觉得这里的排序选项很简单,或者可能是 json.dumps 选项,但我见过很多选项,这让我有点困惑。

标签: pythonjsondictionary

解决方案


这是您的代码的修复程序,请尝试:

napilousers = {'results': 
          [{'userName': 'PDD1\\Samantha', 
            'logonTime': 111111.0, 
            'deviceId': 892},
             {'userName': 'PDD1\\Samantha', 
            'logonTime': 333333.0, 
            'deviceId': 892},{'userName': 'PDD1\\Samantha', 
            'logonTime': 222222.0, 
            'deviceId': 892}] 
             
}

sorted_napilousers = dict(napilousers)
sorted_napilousers['results'] = sorted(napilousers['results'], key=lambda x : x['logonTime'], reverse=True)
print(sorted_napilousers)

你的尝试并不可怕,你只是犯了一些小错误。


推荐阅读